63.不同的路徑II

在這裏插入圖片描述

不是很難。
初始化時想了想
在轉移時要判斷當前有沒有障礙物,有的話就是0;沒有的話纔可以路徑相加。

class Solution {
    public int uniquePathsWithObstacles(int[][] obstacleGrid) {
        int dp[][]=new int[obstacleGrid.length][obstacleGrid[0].length];
        if(obstacleGrid[0][0]==0) dp[0][0]=1;
        for(int i=1;i<obstacleGrid.length;i++){
            if(obstacleGrid[i][0]==0) dp[i][0]=dp[i-1][0];
            else dp[i][0]=0;
        }
        for(int i=1;i<obstacleGrid[0].length;i++){

            if(obstacleGrid[0][i]==0) dp[0][i]=dp[0][i-1];
            else dp[0][i]=0;
        }
        for(int i=1;i<obstacleGrid.length;i++){
            for(int j=1;j<obstacleGrid[0].length;j++){
                if(obstacleGrid[i][j]==0) dp[i][j]=dp[i-1][j]+dp[i][j-1];
            }
        }
        return dp[obstacleGrid.length-1][obstacleGrid[0].length-1];
    }
}


原來也能在原數組上進行,這樣空間複雜度變爲了O(1)了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章