120. 三角形最小路径和

发布时间 2023-05-06 16:27:46作者: 猥琐丑八怪

 分析:

经典动态规划路径求和

就是定义数组有点麻烦,写了一个循环

后面还有边缘问题注意一下就行

i循环从1开始,初始赋值f[0][0]=triangle[0][0]

代码:

class Solution(object):
    def minimumTotal(self, triangle):
        """
        :type triangle: List[List[int]]
        :rtype: int
        """
        # 到当前层时的最小和为f[i][j]
        # min(f[-1])
        # f[i]=min(f[i-1][j],f[i-1][j-1])+triangle[i][j]
        # f[0][0]=triangle[0][0]
        f=[]
        for i in range(1,len(triangle)+1):
            a=[0 for i in range(i)]
            f.append(a)
        # return f
        f[0][0]=triangle[0][0]
        for i in range(1,len(triangle)):
            for j in range(len(triangle[i])):
                if j==0:
                    f[i][j]=f[i-1][j]+triangle[i][j]
                elif j==i:
                    f[i][j]=f[i-1][j-1]+triangle[i][j]
                else:
                    f[i][j]=min(f[i-1][j],f[i-1][j-1])+triangle[i][j]
        return min(f[-1])