leetcode 63 Unique Paths II

Python3:

class Solution:
    def uniquePathsWithObstacles(self, obstacleGrid):
        """
        :type obstacleGrid: List[List[int]]
        :rtype: int
        """
        if  obstacleGrid[0][0] == 1:
            return 0
        for i in range(len(obstacleGrid)):
            for j in range(len(obstacleGrid[0])):
                if obstacleGrid[i][j] == 1 or i==j==0:
                    obstacleGrid[i][j] -= 1
                else:
                    a = obstacleGrid[i-1][j] if i>0 else 0
                    b = obstacleGrid[i][j-1] if j>0 else 0
                    obstacleGrid[i][j] += a+b
        return abs(obstacleGrid[-1][-1])
                

C++:

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        int row = obstacleGrid.size(), col = obstacleGrid[0].size();
        int dp[row][col];
        if(obstacleGrid[0][0]==1) return 0;
        for(int i=0;i<row;i++){
            for(int j=0;j<col;j++){
                if(obstacleGrid[i][j] == 1) dp[i][j] = 0;
                else
                    if(i==0&&j==0)
                        dp[0][0] = 1;
                    else
                        if(i==0)
                            dp[i][j] = dp[i][j-1];
                        else
                            if(j==0)
                                dp[i][j] = dp[i-1][j];
                            else
                                dp[i][j] = dp[i-1][j] + dp[i][j-1];
            }
        }
        return dp[row-1][col-1];
    }
};

猜你喜欢

转载自blog.csdn.net/mrxjh/article/details/80490648
今日推荐