0
点赞
收藏
分享

微信扫一扫

Leetcode 63.不同路径II(动规) 记录反思

小飞侠熙熙 2022-03-12 阅读 59
leetcode

在这里插入图片描述
leetcode 62 题变种,可以先去看一下我写的62题解析

这题和62题十分相似,首先我们要明白这个路径上如果出现了一个障碍意味着什么,说明这条路直接走不通不用记在总数里.
如果这条路出现在上边界或者左边界的话,那么障碍之后的路永远也无法在走到了
所以在数组初始化的时候要做一个判断,如果路径上出现了障碍物,这条路直接退出
其他的和62题一摸一样

class Solution {
    public int uniquePathsWithObstacles(int[][] obstacleGrid) {
        int m = obstacleGrid.length;
        int n = obstacleGrid[0].length;
        int dp[][] = new int[m][n];
        for(int i = 0; i < m; i++){
            if(obstacleGrid[i][0]  == 1)  //障碍出现在上边界,直接打断循环
                break;
            dp[i][0] = 1;
        }
         for(int i = 0; i < n; i++){
            if(obstacleGrid[0][i]  == 1)//障碍出现在左边界直接打断循环
                break;
            dp[0][i] = 1;
        }
        for(int i = 1; i < m ; i++){
            for(int j = 1;j < n; j ++){
                if(obstacleGrid[i][j] == 1) //如果当前路径出现了障碍,直接退出当前循环
                    continue;
                dp[i][j] = dp[i-1][j] + dp[i][j - 1];
            }
        }
        return dp[m-1][n-1];
    }
举报

相关推荐

0 条评论