• 刷题-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 }
  • 相关阅读:
    前端安全问题
    windows下nginx的安装及使用方法入门
    windows下安装nginx
    获取div的高度
    HAOI2015 简要题解
    JLOI2016 简要题解
    JLOI2015 DAY2 简要题解
    JLOI2015 DAY1 简要题解
    SCOI2016 Day2 简要题解
    CS Academy Sliding Product Sum(组合数)
  • 原文地址:https://www.cnblogs.com/dul843/p/14262089.html
Copyright © 2020-2023  润新知