美文网首页
leetcode62/63M不同路径

leetcode62/63M不同路径

作者: 愤怒的灰机 | 来源:发表于2018-10-11 17:22 被阅读0次

一. 62——不同路径

题目

思路:

以4*4的矩阵为例(如下图),首先考虑行数为1的情况(最下面一行),每个格子除了往右走之外别无选择,因此从这个格子出发可能的路径都是1,然后在此基础上考虑倒数第二行(从最右边的列开始),最后一列只能往下,有一种选择,倒数第二列可以往右或者往下,因此它的可能的选择等于它右边一格的选择数加上下边一格的选择数(1+1=2),同样的,第二列的选择数等于右边的2+下边的1=3,因此,我们可以得出结论,就是每一格的选择数等于它右边的格加下边的格的选择数。


4*4的格子的可选路径数

实现方法,初始化一个一维数组,长度为格子的列数,然后先得到倒数第一行,再得到倒数第二行,以此类推,最后数组的第一个元素就是结果:

代码:

public static int uniquePaths(int m, int n) {
        int[] arr=new int[m];
        Arrays.fill(arr, 1);
        for(int row=1;row<n;row++){
            for(int col=m-2;col>=0;col--){
                arr[col]=arr[col]+arr[col+1];
            }
        }
        return arr[0];
    }

一. 63——不同路径2

题目

思路:

和上一道题类似,区别在于如果矩阵中这个格子有障碍,则把他置0即可,下图是一个有障碍的4*4的格子和它对应的路径数表格,需要注意的一点是如果最后一行的某一个有障碍,那么这一行左边的路径数都是0,如果最右边的一列的某一格有障碍,那么这一列上面的所有路径数都是0


4*4的有障碍矩阵

代码:

public static int uniquePathsWithObstacles(int[][] arr) {
        int rowNum=arr[0].length;
        int[] pArr=new int[arr.length];
        for(int i=arr.length-1;i>=0;i--){
            if(arr[i][rowNum-1]==0){
                pArr[i]=1;
            }else{
                while(i>=0)pArr[i--]=0;
            }
        }
        for(int row=rowNum-2;row>=0;row--){
            for(int col=arr.length-1;col>=0;col--){
                if(arr[col][row]==1)pArr[col]=0;
                else{
                    if(col!=arr.length-1) pArr[col]=pArr[col]+pArr[col+1];
                }
            }
        }
        return pArr[0];
    }

相关文章

  • leetcode62/63M不同路径

    一. 62——不同路径 思路: 以4*4的矩阵为例(如下图),首先考虑行数为1的情况(最下面一行),每个格子除了往...

  • leetcode62 不同路径

    题目 分析 简单dp问题。边界条件:第一行和第一列全为1,因为上面的每个位置都只有一种方法可以到达。状态转移方程:...

  • Leetcode62不同路径

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向...

  • 0321 #满满是阅读的一天##眼睛现在还疼#

    China Daily: 4×1(40m)概览 FT:阅读、总结笔记(55m) VA:学习8 words(63m)...

  • 不同路径

    一个机器人位于一个 *m x n *网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或...

  • 不同的路径

    LeetCode题目链接有一个机器人的位于一个 m × n 个网格左上角。机器人每一时刻只能向下或者向右移动一步。...

  • 不同路径

    一个机器人位于一个 *m x n *网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或...

  • 不同路径

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/uniq...

  • 不同路径

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右...

  • 不同路径

    题目描述:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能...

网友评论

      本文标题:leetcode62/63M不同路径

      本文链接:https://www.haomeiwen.com/subject/mzwdoftx.html