https://leetcode.com/problems/triangle/submissions/
解题思路
sumList用来保存上一层路径的求和结果,nextSumList保存当前层的求和结果,nextSumList[i] = row[i] + min(sumList[i-1], sumList[i]),当前值加上 上一层两个路径最小的和。
代码
Python
class Solution:
def minimumTotal(self, triangle: List[List[int]]) -> int:
sumList = [0]
nextSumList = []
for row in triangle:
for i in range(len(row)):
if i == 0:
nextSumList.append(sumList[0] + row[i])
elif i == len(row) - 1:
nextSumList.append(sumList[i-1] + row[i])
else:
nextSumList.append(min(sumList[i-1], sumList[i])+row[i])
sumList = nextSumList
nextSumList = []
return min(sumList)