LeetCode 64 [Minimum Path Sum]

原題

給定一個(gè)只含非負(fù)整數(shù)的m*n網(wǎng)格,找到一條從左上角到右下角的可以使數(shù)字和最小的路徑。

你在同一時(shí)間只能向下或者向右移動(dòng)一步

解題思路

  • 矩陣型動(dòng)態(tài)規(guī)劃 - Matrix DP
  • 與Unique Paths I/II非常類(lèi)似,不同的是每次要找最小value
  • cache[i][j]表示從左上角到達(dá)i,j的數(shù)字和最小路徑,它等于cache[i][j - 1]與cache[i - 1][j]的最小值,加上grid[i][j]的值

完整代碼

class Solution(object):
    def minPathSum(self, grid):
        """
        :type grid: List[List[int]]
        :rtype: int
        """
        if not grid or not grid[0]:
            return 0
        m = len(grid)
        n = len(grid[0])
        cache = [[0 for i in range(n)] for j in range(m)]
        sum1 = sum2 = 0
        for i in range(n):
            sum1 += grid[0][i]
            cache[0][i] = sum1
        for j in range(m):
            sum2 += grid[j][0]
            cache[j][0] = sum2
        for i in range(1, n):
            for j in range(1, m):
                cache[j][i] = min(cache[j - 1][i], cache[j][i - 1]) + grid[j][i]
        return cache[m - 1][n - 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ù)。

相關(guān)閱讀更多精彩內(nèi)容

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