leetcode 62 組合數 動態規劃

2021-10-11 17:50:50 字數 1205 閱讀 1303

解法一:組合數

一共有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 條路徑可以到達右下角。向右...