# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param triangle int整型二维数组 # @return int整型 # #1.线性dp class Solution: def minTrace(self , triangle: List[List[int]]) -> int: # write code here #逆向思维,自底向上 dp=triangle[-1] n=len(triangle) for i in range(n-2,-1,-1):#从倒数第二行开始 for j in range(len(triangle[i])): #必须正向,避免覆盖 dp[j]=min(dp[j],dp[j+1])+triangle[i][j] return dp[0] #1. 二维dp的求解思路 # class Solution: # def minTrace(self , triangle: List[List[int]]) -> int: # # write code here # #dp[i][j]=dp[i-1][j]+dp[i-1][j-1] # dp=triangle # for i in range(1,len(triangle)): # for j in range(len(triangle[i])): # if j==0: # dp[i][j]=dp[i-1][j]+triangle[i][j] # elif j==len(triangle[i])-1: # dp[i][j]=dp[i-1][j-1]+triangle[i][j] # else: # dp[i][j]=min(dp[i-1][j],dp[i-1][j-1])+triangle[i][j] # return min(dp[len(triangle)-1])