共计 704 个字符,预计需要花费 2 分钟才能阅读完成。
问题描述:一个机器人位于一个 m x n 网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?
示例:
输入: m = 3, n = 2
输出: 3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向右 -> 向下 2. 向右 -> 向下 -> 向右 3. 向下 -> 向右 -> 向右
解决思路:使用动态规划思想,假设到达终点之前我们只有两种选择,一种是向下移一位,一种是向右移一位,即 path[m][n] = path[m-1][n]+path[m][n-1]
我们知道 path[0][0]=1
依次计算到path[m][n]
代码如下(~▽~):
import numpy as np
class Solution:
def uniquePaths(self, m: int, n: int) -> int:
res = np.zeros((m, n),dtype=np.int)
for i in range(0,m):
for j in range(0,n):
if j-1>=0 and i-1>=0:
res[i][j] = res[i-1][j]+res[i][j-1]
elif j-1>=0:
res[i][j] = res[i][j-1]
elif i-1>=0:
res[i][j] = res[i-1][j]
else:
res[i][j] = 1
# print(res)
return res[m-1][n-1]
时间与空间复杂度:
时间复杂度有点高⁄(⁄ ⁄ ⁄ω⁄ ⁄ ⁄)⁄,因为是两层循环,大家有好的方法可以留言啊。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/probl…
正文完