解法一:組合數
一共有m-1和n-1種向下或向右的走法,用組合數排序
from math import factorial
class
solution
:def
uniquepaths
(self, m:
int, n:
int)
->
int:
return
int(factorial(m+n-2)
/(factorial(m-1)
*factorial(n-1)
))
解法二:dp
和爬樓梯問題類似,解法求和,啪的一下就過了
class
solution
:def
uniquepaths
(self, m:
int, n:
int)
->
int:
dp =[[
1for _ in
range
(n)]
for _ in
range
(m)]
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
]
class
solution
:def
uniquepaths
(self, m:
int, n:
int)
->
int:
dp =[1
for _ in
range
(n)]
for i in
range(1
, m)
:for j in
range(1
, n)
: dp[j]
+= dp[j-1]
return dp[-1
]
經過如下優化,空間複雜度可優化至o(n) LeetCode 62(動態規劃)
乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?例如,上圖是乙個7 x 3 的網格。有多少可能的路徑?說明 m 和 n 的值均不超過 100。示例 ...
leetcode 62不同路徑(動態規劃 組合)
乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?示例 1 輸入 m 3,n 7 輸出 28 示例2 輸入 m 3,n 2 輸出 3 解釋 從左上角開...
動態規劃 leetcode62 不同路徑 C
乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?示例 1 輸入 m 3,n 2 輸出 3 解釋 從左上角開始,總共有 3 條路徑可以到達右下角。向右...