leetcode 62. 不同路径
题目:62. 不同路径
一个机器人位于一个 m x n 网格的左上角。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。
问总共有多少条不同的路径?
示例1:
输入: m = 3, n = 2
输出: 3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。
- 向右 -> 向右 -> 向下
- 向右 -> 向下 -> 向右
- 向下 -> 向右 -> 向右
示例2:
输入: m = 7, n = 3
输出: 28
提示:
- 1 <= m, n <= 100
- 题目数据保证答案小于等于 2 * 10 ^ 9
方法一:动态规划
思路:动态规划,状态转移方程为:dp[i][j] = dp[i][j - 1] + dp[i - 1][j],dp[i][j]表示到达i,j位置的不同路径数。
运行数据:执行用时:0 ms,内存消耗:35.6 MB
复杂度分析:
- 时间复杂度:O(m * n)。
- 空间复杂度:O(m * n)。
1 | // LeetCode指定调用方法 |
方法二:动态规划(优化空间复杂度)
思路:在思路一的基础上将记录动态规划的二维数组压缩成一维数组,状态转移方程为:dp[j] = dp[j - 1] + dp[j],dp[j]表示到达第j列的不同路径数。
运行数据:执行用时:0 ms,内存消耗:35.6 MB
复杂度分析:
- 时间复杂度:O(m * n)。
- 空间复杂度:O(n)。
1 | // LeetCode指定调用方法 |
学习所得,资料、图片部分来源于网络,如有侵权,请联系本人删除。
才疏学浅,若有错误或不当之处,可批评指正,还请见谅!