題目
一個機器人位于一個 m x n 網(wǎng)格的左上角 (起始點在下圖中標(biāo)記為“Start” )。
機器人每次只能向下或者向右移動一步。機器人試圖達到網(wǎng)格的右下角(在下圖中標(biāo)記為“Finish”)。
問總共有多少條不同的路徑?
例如,上圖是一個7 x 3 的網(wǎng)格。有多少可能的路徑?
示例 1:
輸入: m = 3, n = 2
輸出: 3
解釋:
從左上角開始,總共有 3 條路徑可以到達右下角。
1. 向右 -> 向右 -> 向下
2. 向右 -> 向下 -> 向右
3. 向下 -> 向右 -> 向右
示例 2:
輸入: m = 7, n = 3
輸出: 28
提示:
1 <= m, n <= 100
題目數(shù)據(jù)保證答案小于等于 2 * 10 ^ 9
解題思路
class Solution:
def uniquePaths(self, m: int, n: int) -> int:
# countGrid = [[0]*m for i in range(n)]
# for i in range(m):
# countGrid[0][i] = 1
# for j in range(n):
# countGrid[j][0] = 1
# #動態(tài)規(guī)劃,每個元素的最多路線,是為上部+左部
# for i in range(1,m):
# for j in range(1,n):
# countGrid[j][i] = countGrid[j-1][i] + countGrid[j][i-1]
# # print(countGrid)
# return countGrid[n-1][m-1]
#優(yōu)化動態(tài)規(guī)劃的空間,因為是前一列加上當(dāng)前列的前一個元素,可以縮減為一個數(shù)組
countList = [1]*n
for i in range(1, m):
for i in range(1, n):
countList[i] = countList[i-1] + countList[i]
print(countList)
return countList[-1]