当前位置: 首页 > article >正文

118.杨辉三角120.三角形最小路径和

118.杨辉三角&120.三角形最小路径和

118.杨辉三角

思路:其实也是动态规划,相当于题目给出了递推方程

代码:

class Solution {
public:
    vector<vector<int>> generate(int numRows) {
        vector<vector<int>> triangle(numRows);
        for(int i=0;i<numRows;i++){
            triangle[i].resize(i+1,1);
             for(int j=1;j<i;j++){
               //当前值=正上方+左上方(三角形向左对齐后)
                triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
             }
        }
        return triangle;
    }
};

120.三角形最小路径和

思路:动态规划,和网格路径和差不多,主要是边界条件的不同

根据题目要求:相邻的结点 在这里指的是 下标上一层结点下标相同或者等于 上一层结点下标 + 1 的两个结点

路径有三种情况:

(1)三角形左侧边(对齐后二维数组第一列):路径只能来自于正上方

(2)三角形右侧边(二维数组每一层最后一个):路径只能来自于左上方

(3)普通位置:路径来自于左上方或正上方(取最小值)

最后的结果为最后一行每个位置路径和的最小值

代码:

class Solution {
public:
    int minimumTotal(vector<vector<int>>& triangle) {
        int s=triangle.size();
        vector<vector<int>> dp(s,vector<int>(s));
        dp[0][0]=triangle[0][0];
        //初始化每行第一个,只能从它正上方的元素来
        for(int i=1;i<s;i++){
            dp[i][0]=dp[i-1][0]+triangle[i][0];
        }
        for(int i=1;i<s;i++){
            dp[i].resize(i+1,0);
            for(int j=1;j<=i;j++){
                //最后一个元素只能从左上方的来
                if(j==i){
                    dp[i][j]=dp[i-1][j-1]+triangle[i][j];
                }else{
                    dp[i][j]=min(dp[i-1][j],dp[i-1][j-1])+triangle[i][j];
                }
            }
        }
        return *min_element(dp[s-1].begin(),dp[s-1].end());
    }
};

http://www.kler.cn/a/461461.html

相关文章:

  • 38 Opencv HOG特征检测
  • 电脑找不到mfc110.dll文件要如何解决?Windows缺失mfc110.dll文件快速解决方法
  • 超高分辨率 图像 分割处理
  • 跳转至系统设置下某个子模块 - 鸿蒙 Harmony
  • python实现自动登录12306抢票 -- selenium
  • Win11电脑Cursor默认打开markdown文件,如何修改markdown文件默认打开方式为Typora?
  • docker加速镜像和加速镜像配置
  • 基于FPGA的辩论赛系统设计-8名选手-正反两方-支持单选手评分-正反两方评分总和
  • 小程序分包优化实践:解决主包过大和vendor.js体积问题
  • C++ 设计模式:中介者模式(Mediator Pattern)
  • khadas edge2安装ubuntu22.04与ubuntu20.04 docker镜像
  • 计算机网络 (18)使用广播信道的数据链路层
  • Android中加载一张图片占用的内存
  • 2024年总结(2024年1月1日至2024年12月31日)
  • java中的文件操作
  • arthas查看拼接好参数的sql, redis, es完整可直接执行的命令
  • 30天开发操作系统 第 10 天 -- 叠加处理
  • 纯血鸿蒙ArkUI媒体查询详解
  • 【每日学点鸿蒙知识】无障碍、getLastLocation、蓝牙问题、卡片大小、关系型数据库等
  • LeetCode 热题 100_对称二叉树(39_101_简单_C++)(二叉树;递归;层次遍历(广度优先))
  • python中的元组类型
  • Unity中的Input.GetMouseButton,GetMouseButtonDown,GetMouseButtonUp
  • 汇编点灯练习
  • 创建型设计模式、结构型设计模式与行为型设计模式 上下文任务通用方案 设计模式 大全
  • 攻防世界 - Web - Level 3 | very_easy_sql
  • 使用R语言绘制交互地图