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)