Leetcode每日一题
题目链接: 62. 不同路径
难度: 中等
解题思路: 这道题是一道很基础的动态规划题,从左上角到右下角一共有多少种方式。显而易见,第0行和第0列的路径数量肯定为1,需要进行初始化。可以很容易写出状态转移方程:
d
p
[
i
]
[
j
]
=
d
p
[
i
−
1
]
[
j
]
+
d
p
[
i
]
[
j
−
1
]
;
i
:
1
→
m
;
j
:
1
→
n
dp[i][j] = dp[i - 1][j] + dp[i][j - 1]; i:1 \rightarrow m; j:1\rightarrow n
dp[i][j]=dp[i−1][j]+dp[i][j−1];i:1→m;j:1→n
题解:
class Solution:
def uniquePaths(self, m: int, n: int) -> int:
dp = [[0 for i in range(n)] for j in range(m)]
# 初始化
for i in range(n):
dp[0][i] = 1
for j in range(m):
dp[j][0] = 1
for i in range(1, m):
for j in range(1, n):
# 更新后面的值
dp[i][j] = dp[i - 1][j] + dp[i][j - 1]
return dp[m - 1][n - 1]