63. Unique Paths II

https://leetcode.com/problems/unique-paths-ii/description/

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

 

posted @ 2018-11-16 14:53  JTechRoad  阅读(75)  评论(0编辑  收藏  举报