zoukankan      html  css  js  c++  java
  • 刷题-Leetcode-120. 三角形最小路径和

    120. 三角形最小路径和

    题目链接
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/triangle/

    题目描述

    给定一个三角形 triangle ,找出自顶向下的最小路径和。

    每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。

    示例 1: 

    输入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]
    输出:11
    解释:如下面简图所示:
    2
    3 4
    6 5 7
    4 1 8 3
    自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。

    示例 2:

    输入:triangle = [[-10]]
    输出:-10

    示例 3:

    输入:head = [1]
    输出:[1]

    题目分析

    自顶向下

      要考虑边界,多了一些代码。但也更好理解。

     1 int minimumTotal(int** triangle, int triangleSize, int* triangleColSize){
     2     int f[triangleSize][triangleSize];
     3     memset(f, 0, sizeof(f));
     4     f[0][0] = triangle[0][0];
     5     for(int i=1;i<triangleSize;i++){
     6         f[i][0] = f[i-1][0] + triangle[i][0];
     7         for(int j=1;j<i;j++){
     8             int a = f[i-1][j-1];
     9             int b = f[i-1][j];
    10             f[i][j] = (a>b?b:a) +triangle[i][j];
    11         }
    12         f[i][i] = f[i-1][i-1] + triangle[i][i];
    13     }
    14     int min = f[triangleSize-1][0];
    15     for(int i=1;i<triangleSize;i++){
    16         if(f[triangleSize-1][i]<min){
    17             min = f[triangleSize-1][i];
    18         }
    19     }
    20     return min;
    21 }

     从下到上

      不同判断边界,更好。

      可以简化代码,不定义新的数组。

      注意:从下到上要i--,不要马虎哦。

     1 int minimumTotal(int** triangle, int triangleSize, int* triangleColSize){
     2     //自下向上
     3     int f[triangleSize][triangleSize];
     4     for(int i=0;i<triangleSize;i++){
     5         f[triangleSize-1][i] = triangle[triangleSize-1][i];
     6     }
     7     for(int i=triangleSize-2;i>=0;i--){//注意i--
     8         for(int j=0;j<=i;j++){
     9             int b = f[i+1][j+1];
    10             int a = f[i+1][j];
    11             f[i][j] = (a>b?b:a)+triangle[i][j];
    12         }
    13     }
    14     return f[0][0];
    15 
    16 }
  • 相关阅读:
    Centos7 ifconfig命令找不到
    request的各种方法
    linux开放端口
    easyui datagrid 部分参数
    设置tomcat内存
    tomcat做成系统服务
    Meta-analysis with complex research designs: dealing with dependence from multiple measures and multiple group comparisons
    多重校正
    DTI
    learning source archive
  • 原文地址:https://www.cnblogs.com/dul843/p/14262089.html
Copyright © 2011-2022 走看看