• 利用一个数组dp来存储当前层的上一层元素,然后从前往后修改dp数组中的元素。
  • dp[j] = triangle[i][j] + min(dp[j],dp[j+1]),其中j表示当前层的第j个元素的下标。
  • 通过从后往前遍历每一层,就找到了每一个点的最小值的路径,最终遍历至一底层,最小值存储在dp[0]
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param triangle int整型二维数组 
# @return int整型
#
class Solution:
    def minTrace(self , triangle: List[List[int]]) -> int:
        # write code here
        if len(triangle) == 0:
            return 0
        if len(triangle) == 1:
            return triangle[0][0]
        dp = triangle[len(triangle)-1]
        for row in range(len(triangle)-2,-1,-1):
            for col in range(len(triangle[row])):
                dp[col] = triangle[row][col] + min(dp[col],dp[col+1])
        return dp[0]