LeetCode 62. 不同路徑

題目

一個(gè)機(jī)器人位于一個(gè) m x n 網(wǎng)格的左上角 (起始點(diǎn)在下圖中標(biāo)記為“Start” )。

機(jī)器人每次只能向下或者向右移動(dòng)一步。機(jī)器人試圖達(dá)到網(wǎng)格的右下角(在下圖中標(biāo)記為“Finish”)。



問(wèn)總共有多少條不同的路徑?

例如,上圖是一個(gè)7 x 3 的網(wǎng)格。有多少可能的路徑?

示例 1:

輸入: m = 3, n = 2
輸出: 3
解釋:
從左上角開(kāi)始,總共有 3 條路徑可以到達(dá)右下角。
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
        # #動(dòng)態(tài)規(guī)劃,每個(gè)元素的最多路線,是為上部+左部
        # 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)化動(dòng)態(tài)規(guī)劃的空間,因?yàn)槭乔耙涣屑由袭?dāng)前列的前一個(gè)元素,可以縮減為一個(gè)數(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]
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容