leetcode62 不同路徑

2021-09-24 03:14:25 字數 1273 閱讀 5988

要走到最下角,一共要走m-1+n-1=m+n-2步,即從m+n-2中挑出m-1步向下走就可以了,或者挑出n-1步向右走(排列組合式子等值)。那麼按照這樣,所有的走法即為

class solution:

def uniquepaths(self, m: int, n: int) -> int:

#定義計算排列組合的函式

def cheng(n):

res = 1

for i in range(n,0,-1):

res *= i

return res

#直接返回

return int(cheng(m+n-2) / (cheng(n-1) * cheng(m-1)))

建立大小為m * n的dp表,dp[i][j]表示走到當前位置的路徑數目。

第一行和第一列單獨考慮,均為1;

其他格仔中的動態方程為:dp[i][j] = dp[i][j-1] + dp[i-1][j]

class solution: 

def uniquepaths(self, m: int, n: int) -> int:

if m == 0 or n == 0:

return 0

dp = [[0] * n for _ in range(m)]

#第一列

for i in range(m):

dp[i][0] = 1

#第一行

for j in range(n):

dp[0][j] = 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[-1][-1]

時間複雜度: o(m*n)

空間複雜度: o(m * n)

Leetcode 62 不同路徑

乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?例如,上圖是乙個7 x 3 的網格。有多少可能的路徑?說明 m 和 n 的值均不超過 100。示例 ...

leetcode 62 不同路徑

時間複雜度o n2 def uniquepaths m,n 計算路徑的個數 memo 0 for j in range n for i in range m for i in range m for j in range n if i 0 and j 0 memo i j 1 elif j 0 me...

LeetCode 62 不同路徑

乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?例如,上圖是乙個7 x 3 的網格。有多少可能的路徑?說明 m 和 n 的值均不超過 100。示例 ...