Lang: C++; Complexity[Time, Space]: [O(m*n), O(m*n)]


#1
int Solution::uniquePathsWithObstacles(vector<vector<int> > &A) 
{
    int rows=A.size(), cols=A[0].size();

    A[0][0] = ((A[0][0]==1)?0:1);
    for(int i=1; i<max(rows,cols); i++)
    {
        if(i<rows)
            A[i][0]=((A[i][0]==1)? 0 : A[i-1][0]);
        if(i<cols)
            A[0][i]=((A[0][i]==1)? 0 : A[0][i-1]);
    }
    
    for(int r=1; r<rows; r++)
        for(int c=1; c<cols; c++)
            A[r][c]=((A[r][c]==1)? 0 : A[r-1][c]+A[r][c-1]);
            
    return A.back().back();
}