LeetCode 62 题讲解
目录
警告
本文最后更新于 2023-04-03,文中内容可能已过时。
Leetcode 62 题
题干简述
给定:
- 一个机器人位于一个 m x n 网格的左上角。
- 机器人每次只能向下或者向右移动一步。
要求:机器人试图达到网格的右下角,请问总共有多少条不同的路径?
题目详情:62. 不同路径
解题思路
现在我们已经刷了好多动态规划的题了,如果你已经理解了动态规划的思想,那么这道题应该非常简单就可以写出来。 (如果想找到之前的动态规划文章,点击👉烤冷面讲算法 - 动态规划
类似「动态规划」LeetCode 70(爬楼梯) 问题,爬楼梯每次只能爬 1 级或者 2 级台阶,
如果我们把目光聚焦于「局部问题」,将第 n 级台阶的爬法记为函数dp
,可以推出:dp[n] = dp[n−1] + dp[n−2]
对于本题,机器人每次只能向下或者向右移动一步,相当于原本的一位数组变成了二维数组,写成公式:dp[i][j] = dp[i-1][j] + dp[i][j-1]
假设m=3,n=7
,我们可以画出这样一个矩阵:
1 | 1 | 1 | 1 | 1 | 1 | 1 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
1 | 3 | 6 | 10 | 15 | 21 | 28 |
代码实现
|
|
复杂度
时间复杂度O($n^2$),空间复杂度O($n^2$)。
Buy me a coffee~
支付宝
微信