zoukankan      html  css  js  c++  java
  • 【Leetcode】120. 三角形最小路径和

    给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。

    例如,给定三角形:

    [
         [2],
        [3,4],
       [6,5,7],
      [4,1,8,3]
    ]
    

    自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。

    说明:

    如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。

    时间复杂度O(N2) 空间复杂度O(N)

    class Solution {
    public:
        int minimumTotal(vector<vector<int>>& triangle) {
            int s=triangle.size(),t=999999;
            int a[2][s];
            a[0][0]=triangle[0][0];
            a[1][0]=a[0][0];
            for(int i=1;i<s;i++)
            {
                 
                for(int j=0;j<=i;j++)
            {
                 if(j==0)
                {a[0][0]=a[1][0]+triangle[i][0];
                }
                else if(j==i)
                {
                    a[0][j]=a[1][j-1]+triangle[i][j];
                }
                
                else{
                    a[0][j]=min(a[1][j-1],a[1][j])+triangle[i][j];
                }
            }
            for(int j=0;j<=i;j++)
            {
                a[1][j]=a[0][j];}}
            for(int i=0;i<s;i++)
            {if(a[0][i]<t)
            t=a[0][i];
    
            }
            return t;
        }
    };
  • 相关阅读:
    nginx.conf
    添加分类和标签,级联数据
    使用事物插入数据库
    列表页面常用技巧
    常用TagHelper
    培训指导
    控件数据绑定总结
    快速添加Basic表单
    自动构建表单
    模块制作标准说明
  • 原文地址:https://www.cnblogs.com/lau1997/p/12713650.html
Copyright © 2011-2022 走看看