Triangle (Leetcode 120)

Problem Link: https://leetcode.com/problems/triangle/

class Solution:
    def minimumTotal(self, triangle: List[List[int]]) -> int:
        
        n=len(triangle)
        dp=[[999999 for i in range(n)] for j in range(n)]
                        
        for i in range(n):
            for j in range(i+1):
                if(i==0):
                    dp[i][j]=triangle[i][j]
                else:
                    if(j-1<0):
                        dp[i][j]=triangle[i][j]+dp[i-1][j]
                    elif(i==j):
                        dp[i][j]=triangle[i][j]+dp[i-1][j-1]
                    else:
                        dp[i][j]=triangle[i][j]+min(dp[i-1][j-1],dp[i-1][j])
        ans=float('inf')
        for j in range(n):
            if(dp[n-1][j]!=999999):
                ans=min(ans,dp[n-1][j])
        # print(dp)
        return ans

Last updated