submission with O(1) space complexity and O(n) time complexity in golang
func minimumTotal(triangle [][]int) int {
    
   
    if len(triangle)==1{
        return triangle[0][0]
    }
    triangle[1][0] = triangle[1][0]+triangle[0][0]
    triangle[1][1] = triangle[1][1]+triangle[0][0]
    for i:=2;i<len(triangle);i++{
        
        for j:=0;j<i+1;j++{
            
            if j==0{
                triangle[i][j] = triangle[i][j] + triangle[i-1][j]
            }else if j== i{
                triangle[i][j] = triangle[i][j] + triangle[i-1][j-1]
            }else{ 
                if triangle[i-1][j-1]<triangle[i-1][j]{
                triangle[i][j] += triangle[i-1][j-1]
                }else{
                triangle[i][j] += triangle[i-1][j]
            } 
                 }
        }
        
    }
    
    mini := 1000000000
    for i:=0;i<len(triangle);i++{
        if mini>triangle[len(triangle)-1][i]{
            mini = triangle[len(triangle)-1][i]
        }
    }
    
    return mini
}
Comments (0)