【算法训练 day42 不同路径、不同路径Ⅱ】

目录

  • 前言
  • 一、二分查找-LeetCode 704
    • 思路
    • 实现代码
    • 问题
    • 总结
  • 二、不同路径Ⅱ-LeetCode 63
    • 思路
    • 实现代码
    • 问题
    • 总结


前言

这次算是二刷算法,第一次刷完了但是没有做博客记录下来,只有代码过程没有个人心得记录,结果就是刷完忘了一大半,故作为学习记录便于后期复习自检。


一、二分查找-LeetCode 704

Leecode链接: leetcode 704
文章链接: 代码随想录
视频链接: B站

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。

问总共有多少条不同的路径?

示例1:

输入:m = 3, n = 2
输出:3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。
1. 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右
3. 向下 -> 向右 -> 向下

思路

初始化dp二维数组,该数组的含义为:到达点(i,j)所需要的方法总数,递推公式为dp[i][j] = dp[i-1][j] + dp[i][j-1]。

实现代码

//cpp
class Solution {
public:int uniquePaths(int m, int n) {vector<vector<int>>dp(m,vector<int>(n,0));for(int i = 0;i<n;i++){dp[0][i] = 1;}for(int j = 0;j<m;j++){dp[j][0] = 1;}for(int j = 1;j<m;j++){for(int i = 1;i<n;i++){dp[j][i] = dp[j-1][i] + dp[j][i-1];}}return dp[m-1][n-1];}
};

问题

无。

总结

与爬楼梯类似,点(i,j)与他上一个点还有跟他左边的点有关。因为要达到i,j必须经过这两条路径,只需要将这两条路径的和相加即可。


二、不同路径Ⅱ-LeetCode 63

Leecode链接: LeetCode 63
文章链接: 代码随想录
视频链接: B站

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。

现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?

网格中的障碍物和空位置分别用 1 和 0 来表示。

示例1:

输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]
输出:2
解释:3x3 网格的正中间有一个障碍物。
从左上角到右下角一共有 2 条不同的路径:
1. 向右 -> 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右 -> 向右

思路

初始化dp二维数组,该数组的含义为:到达点(i,j)所需要的方法总数,递推公式为dp[i][j] = dp[i-1][j] + dp[i][j-1]。与上一题有一点不同,即初始化时,两条边都是1,但如果遍历obstacleGrid时遇到1了,这个位置的dp数组需要初始化为0,表示这个位置不可到达,即到达这个点的方案数量为0。

实现代码

//cpp
class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m = obstacleGrid.size();int n = obstacleGrid[0].size();if(obstacleGrid[0][0] == 1||obstacleGrid[m-1][n-1] == 1) return 0;vector<vector<int>>dp(m,vector<int>(n,0));for(int i = 0;i<n&&obstacleGrid[0][i] == 0;i++){dp[0][i] = 1;}for(int j = 0;j<m&&obstacleGrid[j][0] == 0;j++){dp[j][0] = 1;}for(int i = 1;i<n;i++){for(int j = 1;j<m;j++){if(obstacleGrid[i][j] == 1){dp[i][j] = 0;}else{dp[i][j] = dp[i-1][j] + dp[i][j-1];}}}return dp[m-1][n-1];}
};

问题

初始化时,没有想到将obstacleGrid对应得1初始化为0,导致代码结果不对。

总结

题目相对上一题难度有提升,但核心思想基本一致,都是先初始化,然后遍历一步一步得出到达坐标(i,j)的方法。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

六.逼格拉满-Prometheus+Grafana微服务监控告警

前言 微服务架构是一个分布式系统&#xff0c;由多个独立的服务组成&#xff0c;每个服务可能运行在不同的容器、虚拟机或物理机上&#xff0c;那么在生产环境中我们需要随时监控服务的状态&#xff0c;以应对各种突发情况&#xff0c;比如&#xff1a;内存爆满&#xff0c;CP…

【全开源】Java养老护理助浴陪诊小程序医院陪护陪诊小程序APP源码

打造智慧养老服务新篇章 一、引言&#xff1a;养老护理的数字化转型 随着老龄化社会的到来&#xff0c;养老护理需求日益凸显。为了更好地满足老年人及其家庭的需求&#xff0c;我们推出了养老护理助浴陪诊小程序系统源码。该系统源码旨在通过数字化技术&#xff0c;优化养老…

element ui在移动端的适配问题

element ui在移动端的适配问题 问题1&#xff1a; 给el-table表头添加背景色&#xff0c;使用以下代码 :header-row-style“{ background: ‘linear-gradient(90deg, #0079FA 0%, #00C7DD 100%)’ }” 在安卓手机上显示正常&#xff0c;在ios手机上显示背景色添加到每一个th中…

mysql存储地理信息的方法

MySQL 存储地理信息通常使用 GEOMETRY 数据类型或其子类型&#xff08;如 POINT, LINESTRING, POLYGON 等&#xff09;。为了支持这些数据类型&#xff0c;MySQL 提供了 SPATIAL 索引&#xff0c;这允许我们执行高效的地理空间查询。 1. 创建支持地理信息的表 首先&#xff0…

Apache Doris 基础 -- 数据表设计(数据模型)

Versions: 2.1 1、模型概览 本主题从逻辑角度介绍了Doris中的数据模型&#xff0c;以便您可以在不同的业务场景中更好地使用Doris。 基本概念 本文主要从逻辑的角度描述Doris的数据模型&#xff0c;旨在帮助用户在不同的场景更好地利用Doris。 在Doris中&#xff0c;数据在…

基于Android Studio图书管理,图书借阅系统

目录 项目介绍 图片展示 运行环境 获取方式 项目介绍 用户 书架&#xff1a;搜索书籍&#xff0c;查看书籍&#xff0c;借阅书籍&#xff0c;收藏书籍&#xff0c;借阅书籍必须在一个月之内还书&#xff1b; 我的&#xff1a;可以修改密码&#xff0c;退出登录&#xff…

Fwknop:单包授权与端口试探工具

介绍 fwknop实现了一种称为单包授权&#xff08;SPA&#xff09;的授权方案&#xff0c;用于隐藏服务。SPA将单个数据包经过加密&#xff0c;不可重放&#xff0c;并通过HMAC进行身份验证&#xff0c;以便在传达到隐藏在防火墙后面的服务。 SPA的主要应用场景是防火墙来过滤一…

PHP7+ 新特性:合并运算符、太空船运算符(组合比较符)

一、PHP 合并运算符 在 PHP 7.0 中&#xff0c;引入了一个新的运算符&#xff0c;称为 NULL 合并运算符&#xff08;Null Coalescing Operator&#xff09;&#xff0c;它使用 ?? 符号。这个运算符用于简化检查一个变量是否为 NULL 并提供一个默认值的过程。 在以前的 PHP 版…

ssm球场计费管理系统-计算机毕业设计源码77275

摘 要 大数据时代下&#xff0c;数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求&#xff0c;利用互联网服务于其他行业&#xff0c;促进生产&#xff0c;已经是成为一种势不可挡的趋势。在球馆计费管理的要求下&#xff0c;开发一款整体式结构的球场计费管理…

三品软件:打造高效安全的图文档管理体系

在数字化转型的浪潮中&#xff0c;工程设计单位和企业设计部门面临着电子图文档管理的巨大挑战。随着电子图纸和文档数量的激增&#xff0c;如何有效组织、管理和共享这些资源&#xff0c;成为提升工作效率和保障信息安全的关键。本文将探讨当前图文档管理面临的问题&#xff0…

力扣刷题--3046. 分割数组【简单】

题目描述 给你一个长度为 偶数 的整数数组 nums 。你需要将这个数组分割成 nums1 和 nums2 两部分&#xff0c;要求&#xff1a; nums1.length nums2.length nums.length / 2 。 nums1 应包含 互不相同 的元素。 nums2也应包含 互不相同 的元素。 如果能够分割数组就返回 t…

Vue框架-路由

Vue Router 笔记 1. 路由管理 安装 方式一: 采用单页面CDN引入方式使用. 方式二: 基于vite构建的前端项目工程,安装依赖: 在项目根目录下, 安装: npm install vue-router4 -s检查项目根目录下package.json中的dependencies是否多出: "vue-router"依赖. 路由简…

【学习心得】Pandas报错:“试图在来自数据帧的切片副本上设置值”

问题描述与分析 报错&#xff1a;“A value is trying to be set on a copy of a slice from a DataFrame” # data是某个DataFrame# 创建一个判断条件 cond (data[workclass] ?)# 想根据判断条件&#xff0c;修改DataFrame中的某些值 data[workclass][cond] unknown 这个…

KEIL5鼠标右键查找定义或声明选项变灰色不可选

原因&#xff1a;我直接点的KEIL图标打开了昨天的工程 解决办法&#xff1a;关掉工程&#xff0c;重新从文件夹的路径打开 其他原因导致试试以下方法&#xff1a; 1.快捷键F12导航到目标位置 2.路径不能含有中文&#xff0c;改好后&#xff0c;shiftAltf12&#xff0c;更新搜索…

24年gdcpc省赛C题

1279:DFS 序 先不考虑多节点,先看着颗二叉树,假设他们的父亲节点是第k个被访问的点,如果先访问左子树,那么得到的结果是a1*ka2*(k1)b1*(2k)b2*(2k1),可以发现,先访问左子树,那么右子树每次的乘以的p值实际上是左子树乘以的p值加上左子树的节点个数,比如a1*k和b1*(2k),如果不看2…

数据倾斜那些事儿

目录 一、什么是数据倾斜&#xff1f; 二、预判与预防 三、躲闪策略 四、硬刚策略 一、什么是数据倾斜&#xff1f; 之前在大厂当了好几年的sqlboy&#xff0c;数据倾斜这个“小烦人精”确实经常在工作中出没。用简单的话来说&#xff0c;数据倾斜就像是“贫富差距”在数据…

微软发布多模态模型Phi-3-vision,仅4.2B,小模型大潜力

前言 在大型语言模型&#xff08;LLM&#xff09;领域&#xff0c;模型参数规模与性能之间一直存在着密切的联系。近年来&#xff0c;虽然参数规模不断攀升&#xff0c;但随之而来的训练成本和推理成本也成为了制约模型发展的瓶颈。为了打破这一困境&#xff0c;微软推出了 Ph…

C#技术生态全景

分类汇总 1.WINFORM. 2.WINFORM - DevExpress. 3.WPF. 4.计算机网络协议。 1.HTTP 协议&#xff1a;超文本传输协议&#xff0c;用于在 Web 上发送和接收数据&#xff0c;是互联网上最常用的协议之一。2.FTP 协议&#xff1a;文件传输协议&#xff0c;用于在不同计算机之间传…

英语语法早操练-(上)

说起语法宝宝感觉心里苦。那么多语法注意点&#xff0c;哪个都放不到心里&#xff0c;句子表达还是错。这种情况是浪费了80%的时间做了达不到20%效果的事情。 要想写出没有语法错误的句子&#xff0c;那至少得知道词性和句子成分。 词性就是名词、动词、形容词、介词等 句子成分…