梦里一明月 2021-07-18 11:16 采纳率: 100%
浏览 45
已采纳

leetcode63:算法相同 代码也很相似 为何运行结果不一致?

原题连接:leetcode63:不同路径II
先贴出题解的正确通过的代码:

public int uniquePathsWithObstacles(int[][] obstacleGrid) {
        if (obstacleGrid == null || obstacleGrid.length == 0) {
            return 0;
        }
        int m = obstacleGrid.length, n = obstacleGrid[0].length;
        int[][] dp = new int[m][n];

        for (int i = 0; i < m&&obstacleGrid[i][0] == 0; i++) {
                dp[i][0] = 1;
        }
        for (int j = 0; j < n&&obstacleGrid[0][j] == 0; j++) {
                dp[0][j] = 1;
        }

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

第二个是我自己写的,只有一个地方不同,那就是前两个循环中题解是在for循环语句这一行中做了判断,而我是另外用if语句做了判断

两个代码的运行结果却不一致,没搞明白是为什么?

public int uniquePathsWithObstacles(int[][] obstacleGrid){
        if (obstacleGrid == null || obstacleGrid.length == 0) {
            return 0;
        }
        int m=obstacleGrid.length,n=obstacleGrid[0].length;
        int[][] dp = new int[m][n];

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

结果不一致的输入样例如下:
{{0,0},{1,1},{0,0}}

正确答案是0,而第二个代码运行结果为1 ,没想明白是什么原因

  • 写回答

3条回答 默认 最新

  • CSDN专家-sinJack 2021-07-18 11:23
    关注

    那肯定不一样的啊。
    第一种写法的循环终止条件是两个,你写的循环终止条件是一个。好好理解一下。
    对于第一种写法:如果循环终止条件是判断不满足就不会执行。
    对于第二种写法:会依然执行,因为第一个循环判断成立,只是内部的if条件不成立。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已采纳回答 7月18日
  • 创建了问题 7月18日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改