LeetCode 热题 100 | 多维动态规划(一)

目录

1  多维动态规划

2  62. 不同路径

3  64. 最小路径和


菜鸟做题,语言是 C++(细品动态规划 ing)

1  多维动态规划

目前的感觉:抽象为二维数组。

2  62. 不同路径

题眼:“机器人每次只能向下或者向右移动一步”。

核心思想:把总问题拆解为若干子问题。

  • 总问题:到第 i 行第 j 列有多少条路径
  • 子问题:到第 i - 1 行第 j 列有多少条路径、到第 i 行第 j - 1 列有多少条路径
  • 总问题 = 子问题 1 + 子问题 2

思路说明图:如下图所示,到第 1 行第 2 列的路径数 = 到第 0 行第 2 列的路径数 + 到第 1 行第 1 列的路径数。此外,我们还需要设置边界路径数为 1,因为到达这些格子的路径只有 1 条。

class Solution {
public:
    int uniquePaths(int m, int n) {
        vector<vector<int>> dp(m, vector<int>(n));

        // 设置边界
        for (int i = 0; i < m; ++i) {
            dp[i][0] = 1;
        }
        for (int j = 0; j < n; ++j) {
            dp[0][j] = 1;
        }

        // 计算路径
        for (int i = 1; i < m; ++i) {
            for (int j = 1; j < n; ++j) {
                dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
            }
        }

        return dp[m - 1][n - 1];
    }
};

设置边界主要就是为了防止 dp[i - 1][j] 和 dp[i][j - 1] 访问越界。

3  64. 最小路径和

题眼:“每次只能向下或者向右移动一步”。

核心思想:把总问题拆解为若干子问题。

  • 总问题:到第 i 行第 j 列的路径和
  • 子问题:到第 i - 1 行第 j 列的路径和、到第 i 行第 j - 1 列的路径和
  • 总问题 = 子问题 1 + 子问题 2

思路说明图:如下图所示,本题的边界初始化与  62. 不同路径  略有不同。

本质上就是把边界格子的路径和预先算出来。

class Solution {
public:
    int minPathSum(vector<vector<int>>& grid) {
        int m = grid.size();
        int n = grid[0].size();

        vector<vector<int>> dp(m, vector<int>(n));

        // 设置边界
        dp[0][0] = grid[0][0];
        for (int i = 1; i < m; ++i) {
            dp[i][0] = grid[i][0] + dp[i - 1][0];
        }
        for (int j = 1; j < n; ++j) {
            dp[0][j] = grid[0][j] + dp[0][j - 1];
        }

        // 计算路径和
        for (int i = 1; i < m; ++i) {
            for (int j = 1; j < n; ++j) {
                dp[i][j] = grid[i][j] + min(dp[i - 1][j], dp[i][j - 1]);
            }
        }

        return dp[m - 1][n - 1];
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/526773.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Rsync——远程同步命令

目录 一、关于Rsync 1.定义 2.Rsync同步方式 3.备份的方式 4.Rsync命令 5.配置源的两种表达方法 二、配置服务端与客户端的实验——下载 1.准备工作 2.服务端配置 3.客户端配置同步 4.免交互数据同步 5.源服务器删除数据是否会同步 6.可以定期执行数据同步 三、关…

算法——链表(二)

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 小比特 大梦想 此篇文章与大家分享链表专题的第二篇,大部分知识在第一篇中已经呈现 对于归并排序在我个人主页专栏 <排序> 有详细的介绍 如果有不足的或者错误的请您指出! 4.合并K个升序链表 题目:合并k个…

蓝桥杯 交通信号 2022研究生组

问题&#xff1a; Dijstra算法变形题&#xff0c;有向边分正行和逆行方向&#xff0c;注意逆行的绿灯时间是正行的红灯时间。 这题的关键是理清从当前节点出发&#xff0c;到下一个节点是哪一时刻&#xff0c;理清这一点后&#xff0c;再跑Dijstra算法求最短路。 假设curr_t时…

地又接错了?又冒烟了吧?

原文来自微信公众号&#xff1a;工程师看海&#xff0c;与我联系&#xff1a;chunhou0820 看海原创视频教程&#xff1a;《运放秘籍》 大家好&#xff0c;我是工程师看海&#xff0c;原创文章欢迎点赞分享&#xff01; 作为一名硬件工程师&#xff0c;理解地的概念是至关重要的…

Educational Codeforces Round 162 (Rated for Div. 2) ----- E. Count Paths --- 题解

E. Count Paths&#xff1a; 题目大意&#xff1a; 思路解析&#xff1a; 根据题目中定义的美丽路径&#xff0c;我们可以发现路径只有两种情况&#xff1a; 当前结点作为起始结点&#xff0c;那我们只需要知道它的子树下有多少个相同颜色的结点&#xff0c;并且相同颜色的结…

理解 Golang 变量在内存分配中的规则

为什么有些变量在堆中分配、有些却在栈中分配&#xff1f; 我们先看来栈和堆的特点&#xff1a; 简单总结就是&#xff1a; 栈&#xff1a;函数局部变量&#xff0c;小数据 堆&#xff1a;大的局部变量&#xff0c;函数内部产生逃逸的变量&#xff0c;动态分配的数据&#x…

2.动态库与静态库

1.库的制作 库文件是计算机上的一类文件&#xff0c;可以将库文件看做是一种代码仓库。它提供给使用者一些可以直接拿来用的变量&#xff0c;函数或类。库是一种特殊的程序&#xff0c;但是库是不能单独运行的。 库文件有两种&#xff1a;静态库和动态库 静态库: GCC进行链接…

IDEA中修改git的作者、邮箱名称

目录 一、查看当前git信息 1、查看git作者名称 如下图&#xff1a; 2、查看git邮箱信息 二、修改git信息 1、修改git作者名称 如下图&#xff1a; 2、修改git邮箱名称 一、查看当前git信息 1、查看git作者名称 在git控制台 或者 Terminal 输入 git config user.name …

vue实现富文本编辑器的具体方法

可以实现富文本的插件&#xff1a;vue-quill-editor、editor-for-vue 我们以 editor-for-vue 为例实现&#xff1a; 传送门&#xff1a;wangEditor官网地址 安装&#xff1a; npm install wangeditor/editor --save npm install wangeditor/editor-for-vue --save具体使用方…

Windows Edge浏览器的兼容性问题及解决方案

1、Windows Edge&#xff08;了解 Microsoft Edge&#xff09;&#xff1a; 简单介绍&#xff1a; Microsoft Edge是一款由微软开发的网页浏览器&#xff0c;最初于2015年伴随Windows 10推出&#xff0c;作为Internet Explorer的继任者&#xff0c;旨在提供更快、更安全、更现代…

语音特征的反应——语谱图

语谱图的横坐标为时间&#xff0c;纵坐标为对应时间点的频率。坐标中的每个点用不同颜色表示&#xff0c;颜色越亮表示频率越大&#xff0c;颜色越淡表示频率越小。可以说语谱图是一个在二维平面展示三维信息的图,既能够表示频率信息,又能够表示时间信息。 创建和绘制语谱图的…

rsync + inotify 上行同步

一 上行同步相关概念 1&#xff0c;上行同步是什么 上行同步是指从本地&#xff08;发起端&#xff09;向远程&#xff08;同步源&#xff09;服务器推送数据的过程。在这种模式下&#xff1a; 本地机器作为数据的源头&#xff0c;通常包含需要更新或备份到远程服务器的…

基于Vue3 中后台管理系统框架

基于Vue3 中后台管理系统框架 文章目录 基于Vue3 中后台管理系统框架一、特点二、源码下载地址 一款开箱即用的 Vue 中后台管理系统框架&#xff0c;支持多款 UI 组件库&#xff0c;兼容PC、移动端。vue-admin, vue-element-admin, vue后台, 后台系统, 后台框架, 管理后台, 管理…

硬件电路板分析维修思路(1)第六条气死人!

原文来自微信公众号&#xff1a;工程师看海&#xff0c;与我联系&#xff1a;chunhou0820 看海原创视频教程&#xff1a;《运放秘籍》 大家好&#xff0c;我是工程师看海&#xff0c;原创文章欢迎点赞分享&#xff01; 分析、定位、维修电路是硬件工程师的基本工作内容&#x…

软考信息处理技术员2024年5月报名流程及注意事项

2024年5月软考信息处理技术员报名入口&#xff1a; 中国计算机技术职业资格网&#xff08;http://www.ruankao.org.cn/&#xff09; 2024年软考报名时间暂未公布&#xff0c;考试时间上半年为5月25日到28日&#xff0c;下半年考试时间为11月9日到12日。不想错过考试最新消息的…

神经网络与深度学习(二)——性能优化

性能优化 1.常用技巧1.1模型初始化1.2训练数据与测试数据1.3欠拟合与过拟合1.4权重衰减&#xff08;L2正则化&#xff09;1.5暂退&#xff08;Dropout&#xff09; 2.动量法2.1病态曲率2.2动量法 3.自适应梯度算法3.1AdaGrad3.2RMSProp3.3Adam 4.总结 1.常用技巧 1.1模型初始化…

CSS常见样式

字体相关的样式 <style>div{/* 斜体 */font-style: italic;/* 加粗 100-900*/font-weight: 900;/* 字体大小 */font-size: 20px;/* 声明字体格式 */font-family: "微软雅黑";}</style> div内部文字垂直居中 只需要将行高设为其height的大小即可。 div{…

反转链表 II(leetcode)

题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 分享两道解题思路&#xff1a; 第一个&#xff1a; 将left~right之间的节点翻转&#xff0c;首先left前的节点的next置为空&#xff0c;right的指针置为空&#xff0c; 然后拼接 p1指的是left前面的一个 p1-…

静电场概述

什么是静电场 静电场是由特殊的电荷引起场。 这个特殊的电荷指&#xff1a;相对于观察者静止、且电量不随时间改变的电荷。 库仑定律 指在无限大的真空中&#xff0c;当两个静止的小带电体之间的距离远远大于本身的几何尺寸时&#xff0c;该两带电体之间的作用力。 如图所示…

Open CASCADE学习|统计形状拓扑数量

边界表示法&#xff08;Boundary Representation&#xff0c;简称B-Rep&#xff09;是几何造型中最成熟、无二义的表示法。它主要用于描述物体的几何信息和拓扑信息。在边界表示法中&#xff0c;一个实体&#xff08;Solid&#xff09;由一组封闭的面&#xff08;Face&#xff…