当前位置: 首页 > 后端技术 > Java

LeetCode-062-DifferentPaths

时间:2023-04-01 22:19:23 Java

DifferentPaths题目描述:一个机器人位于mxn网格的左上角(下图中起点标记为“Start”)。机器人一次只能向下或向右移动一步。机器人试图到达网格的右下角(下图中标记为“完成”)。总共有多少条不同的路径?例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。解法一:递归法首先,经过分析可知,最后一步到达任意一个单元格可以来自于格子的左侧,也可以来自于格子的顶部,所以达到的步数任何一个格子,其左边的步数都加到它上面格子的步数总和上,所以可以用递归的方法求解。具体过程如下:如果m等于1或者n等于1,直接返回1;如果不满足以上条件,则递归调用方法solvesuniquePaths(m-1,n)+uniquePaths(m,n-1)。解法二:迭代法先记录第一行格子的个数全为1,然后由于第一列的值全为1,所以第1~n-1列的值下面的每一行可以根据当前行左边的格子和上一行上面格子的值相加,所以每一行的值都是通过迭代得到的,最后最后一行的最后一个值就是作为最终结果返回。publicclassLeetCode_062{/***递归**@paramm*@paramn*@return*/publicstaticintuniquePaths(intm,intn){if(m==1||n==1){return1;}返回uniquePaths(m-1,n)+uniquePaths(m,n-1);}/***迭代**@paramm*@paramn*@return*/publicstaticintuniquePaths1(intm,intn){if(m==1||n==1){return1;}int[]row=newint[n];for(inti=0;i