63. Unique Paths II - cocoder39/coco39_LC GitHub Wiki

63. Unique Paths II

int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        int m = obstacleGrid.size();
        if (m == 0) {
            return 0;
        }
        int n = obstacleGrid[0].size();
        
        vector<vector<int>> dp(2,vector<int>(n));
        dp[0][0] = obstacleGrid[0][0] == 0;
        for (int i = 1; i < n; i++) {
            dp[0][i] = obstacleGrid[0][i] == 0 ? dp[0][i - 1] : 0;
        }
        
        int pre = 0, cur = 1;
        for (int i = 1; i < m; i++) {
            dp[cur][0] = obstacleGrid[i][0] == 0 ? dp[pre][0] : 0;
            for (int j = 1; j < n; j++) {
                dp[cur][j] = obstacleGrid[i][j] == 0 ? dp[cur][j - 1] + dp[pre][j] : 0;  
            }
            swap(cur, pre);
        }
        return dp[pre][n - 1];
    }
⚠️ **GitHub.com Fallback** ⚠️