lintcode練習 110 最小路徑和

2021-08-25 05:15:14 字數 1083 閱讀 3023

給定乙個只含非負整數的m*n網格,找到一條從左上角到右下角的可以使數字和最小的路徑。

你在同一時間只能向下或者向右移動一步

解題思路:

[[1, 3, 5, 7, 9],

[5, 2,8,5,1],

[4,4,7,2,3],

[3,6,6,1,1],

[2,8,5,0,4]]

1、假設上面為m*n的網格,因為只能向下或者向右,所以第一行和第一列只能由前一位移動來,記錄路徑和

2、從[1][1]開始計算,找到左邊或者上面的最小值,即dp[i][j] = grid[i][j] +min(dp[i][j-1], dp[i-1][j])

3、當全部的網路記錄完成後,右下角的值就是最小路徑和。

class solution:

"""@param grid: a list of lists of integers

@return: an integer, minimizes the sum of all numbers along its path

"""def minpathsum(self, grid):

# write your code here

#定義乙個相同形狀的陣列

n = len(grid)

m = len(grid[0])

dp = grid

#左上角的路徑和為自身。

# 因為只能向右或者向下移動,所以第一行和第一列只能由上一位移動來

for i in range(1, m):

dp[0][i] = dp[0][i-1] + grid[0][i]

for i in range(1, n):

dp[i][0] = dp[i-1][0] + grid[i][0]

# 記錄其他位置的最優路徑和,只能從上或者右,所以選擇最優

for i in range(1, n):

for j in range(1, m):

dp[i][j] = grid[i][j] + min(dp[i][j-1], dp[i-1][j])

return dp[n-1][m-1]

Lintcode演算法練習 110 最小路徑和

描述給定乙個只含非負整數的m n網格,找到一條從左上角到右下角的可以使數字和最小的路徑。樣例 example 1 input 1,3,1 1,5,1 4,2,1 output 7 example 2 input 1,3,2 output 6 思路利用動態規劃思想解決問題,動態規劃的思想是將乙個問題分...

LintCode 110 最小路徑和

給定乙個只含非負整數的m n網格,找到一條從左上角到右下角的可以使數字和最小的路徑。樣例 1 輸入 1,3,1 1,5,1 4,2,1 輸出 7 樣例解釋 路線為 1 3 1 1 1。樣例 2 輸入 1,3,2 輸出 6 解釋 路線是 1 3 2你在同一時間只能向下或者向右移動一步 public c...

lintcode 110最小路徑和

最小路徑和 給定乙個只含非負整數的m n網格,找到一條從左上角到右下角的可以使數字和最小的路徑。注意事項 你在同一時間只能向下或者向右移動一步 您在真實的面試中是否遇到過這個題?yes樣例 標籤 動態規劃 相關題目 1 dynamic programming 容易 數字三角形 26 2 dynami...