借鉴了一下排行榜上大佬们的代码,简写了一下,虽然牺牲了一部分效率,但我觉得更 pythonic。
#
#
# @param matrix int整型二维数组 the matrix
# @return int整型
#
class Solution:
def minPathSum(self , matrix ):
if not matrix:
return 0
dp = [0] * len(matrix[0])
for i in range(len(matrix)):
for j in range(len(matrix[i])):
if not i or not j:
dp[j] = bool(i) * dp[j] + bool(j) * dp[j-1] + matrix[i][j]
else:
dp[j] = min(dp[j], dp[j-1]) + matrix[i][j]
return dp[-1] 然后我去 leetcode 逛了一圈,发现自己还是年轻了,淘到个理解更透彻的写法,简单到离谱:
class Solution:
def minPathSum(self , matrix ):
dp = [float('inf')] * (len(matrix[0])+1)
dp[1] = 0
for row in matrix:
for i, num in enumerate(row):
dp[i + 1] = min(dp[i], dp[i + 1]) + num
return dp[-1] 
京公网安备 11010502036488号