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

代码随想录算法训练营第39天 | 62.不同路径, 63不同路径II

Leetcode - 62:不同路径

题目:

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

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

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

示例 1:

输入:m = 3, n = 7
输出:28

示例 2:

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

示例 3:

输入:m = 7, n = 3
输出:28

示例 4:

输入:m = 3, n = 3
输出:6

笔记:

dp[i][j]的含义:到达二维图的(i,j)点的路径条数。

初始化:求的是到达重点的路径条数,所以我们到达(0,0)点的路径数量为1;

状态转移方程:dp[i][j] = dp[i - 1][j] + dp[i][j - 1]因为只能向下或者向右走。

遍历顺序:就从小到大即可

class Solution {
public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m, vector<int>(n, 0));dp[0][0] = 1;for(int i = 0; i < m; i++){dp[i][0] = 1;}for(int i = 0; i < n; i++){dp[0][i] = 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];}
};

Leetcode - 63:不同路径

题目:

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

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

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

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

示例 1:

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

示例 2:

输入:obstacleGrid = [[0,1],[0,0]]
输出:1

笔记:

加了点障碍我们就对其进行特殊处理,但不要忘记我们每次只能向右下方走,不会拐弯抹角的走。

dp[i][j]的含义:就是到达(i, j)点的路径数量;

初始化:我们需要对[i][0]和[0][i]这两条边进行初始化。遇到障碍物就直接break因为不可能有路径到后面的路了。

状态转移方程:dp[i][j] = dp[i - 1][j] + dp[i][j - 1]但这里我们需要注意的是遇到障碍物我们要continue,肯定不能用break啊,因为我们又不知一种走的方法,也不想最外围那两条边只要路被堵了后面就坑定过不去了。

遍历顺序:从小到大;

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

相关文章:

代码随想录算法训练营第39天 | 62.不同路径, 63不同路径II

Leetcode - 62&#xff1a;不同路径 题目&#xff1a; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#…...

Redis 的慢日志

Redis 的慢日志 Redis 的慢日志&#xff08;Slow Log&#xff09;是用于记录执行时间超过预设阈值的命令请求的系统。慢日志可以帮助运维人员和开发人员识别潜在的性能瓶颈&#xff0c;定位那些可能导致 Redis 性能下降或响应延迟的慢查询。以下是 Redis 慢日志的相关细节&…...

第十四届蓝桥杯第十题:蜗牛分享

问题描述 输入格式 输出格式 输出共一行&#xff0c;一个浮点数表示答案&#xff08;四舍五入保留两位小数&#xff09;。 样例输入 3 1 10 11 1 1 2 1样例输出 4.20样例说明 蜗牛路线&#xff1a;(0,0)→(1,0)→(1,1)→(10,1)→(10,0)→(11,0)(0,0)→(1,0)→(1,1)→(10,1…...

不懂技术的老板,如何避免过度依赖核心技术人员

在这个日新月异、技术驱动的时代&#xff0c;即使作为非技术背景的老板&#xff0c;也深知核心技术人员的价值。然而&#xff0c;过度依赖某几位核心技术人员&#xff0c;不仅可能带来经营风险&#xff0c;还可能限制企业的创新与发展。那么&#xff0c;不懂技术的老板&#xf…...

Vue系列-el挂载

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>el:挂载点</title> </head> <body&g…...

python--os和os.path模块

>>> import os >>> #curdir #获取当前脚本的绝对路径 >>> os.curdir . >>> import os.path >>> #获取绝对路径 >>> os.path.abspath(os.curdir) C:\\Users\\GUOGUO>>> #chdir #修改当前目录 >&g…...

前端通用命名规范和Vue项目命名规范

​​​​​​通用命名规范 变量和常量命名&#xff1a;变量和常量的命名应具有描述性&#xff0c;清晰明了&#xff0c;使用驼峰命名法或下划线命名法&#xff0c;例如&#xff1a;firstName、MAX_VALUE。 函数和方法命名&#xff1a;函数和方法的命名应该能够准确描述其功能&…...

NTP服务搭建

一、ntpd和ntpdate区别 1.ntpd是自动执行的远程更新本地系统时钟的服务&#xff0c;是平滑同步&#xff1b; 2.ntpdate是手工执行的服务&#xff0c;也就是一般用它执行一次本地时间更新&#xff0c;如果做成半自动&#xff0c;可以写入到crontab自动任务&#xff0c;从而变成…...

Linux离线安装mysql,node,forever

PS:本文是基于centos7实现的,要求系统能够查看ifconfig和unzip解压命令, 实现无网络可安装运行 首先现在百度网盘的离线文件包****安装Xftp 和 Xshell 把机房压缩包传到 home目录下****解压unzip 包名.zip 获取IP先获取到 linux 主机的ip ifconfig Xftp 连接输入IP,然后按照…...

WPF中获取TreeView以及ListView获取其本身滚动条进行滚动

实现自行调节scoll滚动的位置(可相应获取任何控件中的内部滚动条) TreeView:TreeViewAutomationPeer lvap new TreeViewAutomationPeer(treeView); var svap lvap.GetPattern(PatternInterface.Scroll) as ScrollViewerAutomationPeer; var scroll svap.Owner as ScrollVie…...

C语言: 指针讲解

为什么需要指针? &#xff08;1&#xff09;指针的使用使得不同区域的代码可以轻易的共享内存数据。当然你也可以通过数据的复制达到相同的效果&#xff0c;但是这样往往效率不太好&#xff0c;因为诸如结构体等大型数据&#xff0c;占用的字节数多&#xff0c;复制很消耗性能…...

C#使用Stopwatch类来实现计时功能

前言 在 C# 中&#xff0c;Stopwatch 类是用于测量经过的时间的工具类&#xff0c;提供了高精度的计时功能。Stopwatch 类位于 System.Diagnostics 命名空间中。通常情况下&#xff0c;使用 Stopwatch 的流程是创建一个 Stopwatch 对象&#xff0c;然后调用 Start 方法开始计时…...

ubuntu18.04安装qt

ubuntu18.04安装qt 1、下载文件 比如我下载的是5.13.0版本 下载链接 2、安装 wget https://download.qt.io/archive/qt/5.13/5.13.0/qt-opensource-linux-x64-5.13.0.runsudo chmod x qt-opensource-linux-x64-5.13.0.runsudo ./qt-opensource-linux-x64-5.13.0.run参考文…...

ElasticSearch、java的四大内置函数式接口、Stream流、parallelStream背后的技术、Optional类

第四周笔记 一、ElasticSearch 1.安装 apt-get install lrzsz adduser -m es 创建用户组&#xff1a; useradd *-m* xiaoming(用户名) *PS&#xff1a;追加参数-m* passwd xiaoming(用户名) passwd xiaoming 输入新的 UNIX 密码&#xff1a; 重新输入新的 UNIX 密码&…...

深入MNN:开源深度学习框架的介绍、安装与编译指南

引言 在人工智能的世界里&#xff0c;深度学习框架的选择对于研究和应用的进展至关重要。MNN&#xff0c;作为一个轻量级、高效率的深度学习框架&#xff0c;近年来受到了众多开发者和研究人员的青睐。它由阿里巴巴集团开源&#xff0c;专为移动端设备设计&#xff0c;支持跨平…...

[LeetCode][400]第 N 位数字

题目 400. 第 N 位数字 给你一个整数 n &#xff0c;请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …] 中找出并返回第 n 位上的数字。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1a;n 11 输出&#xff1a;…...

clickhouse 查询group 分组最大值的一行数据。

按照 sql_finger_md5 分组取query_time_ms 最大的一行数据。 使用any函数可以去匹配到的第一行数据&#xff0c;所以可以先让数据按照query_time_ms 排序&#xff0c;然后再使用group by 和any结合取第一行数据&#xff0c;就是最大值的那一行数据。 selectany (time) as time…...

Python装饰器与生成器:从原理到实践

一、引言 Python 是一种功能强大且易于学习的编程语言&#xff0c;其丰富的特性使得开发者能够高效地完成各种任务。在 Python 中&#xff0c;装饰器和生成器是两个非常重要的概念&#xff0c;它们能够极大地增强代码的可读性和可维护性。本文将详细介绍如何学习 Python 装饰器…...

python-函数引入模块面向对象编程创建类继承

远离复读机行为 def calculate_BMI(weight,height):BMI weight / height**2if BMI < 18.5:category "偏瘦"elif BMI < 25:category "正常"elif BMI < 30:category "偏胖"else:category "肥胖"print(f"您的BMI分类…...

Spring:面试八股

文章目录 参考Spring模块CoreContainerAOP 参考 JavaGuide Spring模块 CoreContainer Spring框架的核心模块&#xff0c;主要提供IoC依赖注入功能的支持。内含四个子模块&#xff1a; Core&#xff1a;基本的核心工具类。Beans&#xff1a;提供对bean的创建、配置、管理功能…...

数据中台下半场比的是治理:六家主流厂商四维度横向测评

一、数据治理&#xff1a;决定数据中台价值兑现的关键变量2026年&#xff0c;一个行业的共识正在变得清晰&#xff1a;数据中台的上限由计算架构决定&#xff0c;但下限由数据治理决定。过去数年&#xff0c;大量企业投入资源搭建了数据中台的基础设施——数据湖、数仓、调度引…...

2026年5月PLC厂家:十大品牌专业评测解决工厂自动化选型难

摘要当制造业加速迈向智能化和柔性生产&#xff0c;PLC作为工业自动化的核心控制单元&#xff0c;其选型直接决定了产线效率、系统稳定性与长期运营成本。然而&#xff0c;面对众多品牌在技术路线、开放程度、生态兼容性上的显著分化&#xff0c;决策者常陷入“性能与成本如何平…...

AI科技热点日报 | 2026年5月12日

文章目录AI科技热点日报 | 2026年5月12日一、 行业标准与规范&#xff1a;AI终端迈入“标准化”时代二、 智能体&#xff08;Agent&#xff09;与具身智能&#xff1a;从云端走向实战三、 算力与基础设施&#xff1a;产业链的深度重构四、 产业融合与应用探索&#xff1a;AI fo…...

技术指标库 Pandas TA 详细使用手册

Pandas TA 详细使用手册&#xff1a;从入门到精通 一、简介与安装 Pandas TA 是一个专为金融时间序列分析打造的技术分析库&#xff0c;它扩展了 Pandas DataFrame&#xff0c;提供 130 种技术指标、60 种K线形态识别功能。它的核心优势在于与 Pandas 深度集成&#xff0c;让你…...

如何用DdddOcr在3分钟内构建离线验证码识别系统

如何用DdddOcr在3分钟内构建离线验证码识别系统 【免费下载链接】ddddocr 带带弟弟 通用验证码识别OCR pypi版 项目地址: https://gitcode.com/gh_mirrors/dd/ddddocr 在当今的自动化测试、数据采集和网络安全领域&#xff0c;验证码识别是绕不开的技术难题。传统的在线…...

在Nodejs后端服务中集成Taotoken调用大模型API

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在Nodejs后端服务中集成Taotoken调用大模型API 对于Node.js后端开发者而言&#xff0c;将大模型能力集成到服务中已成为构建智能应…...

告别I帧卡顿!用H.264帧内刷新(Intra Refresh)让你的直播码率稳如老狗

告别I帧卡顿&#xff01;用H.264帧内刷新&#xff08;Intra Refresh&#xff09;让你的直播码率稳如老狗 直播技术发展到今天&#xff0c;画面流畅度已经成为用户体验的核心指标之一。但许多开发者在实际推流中常遇到一个棘手问题&#xff1a;明明网络带宽充足&#xff0c;却在…...

Excel数据同步ERP/CRM太麻烦?一个Python脚本搞定多系统自动填充(基于GoBot)

Excel数据同步ERP/CRM太麻烦&#xff1f;一个Python脚本搞定多系统自动填充&#xff08;基于GoBot&#xff09; 每次月底看着财务同事在ERP系统里逐条录入Excel数据&#xff0c;市场部同事又在CRM里重复同样的操作&#xff0c;这种低效场景你一定不陌生。数据在不同系统间的孤岛…...

taotoken的token plan套餐让长期使用的成本预测变得简单

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken 的 Token Plan 套餐让长期使用的成本预测变得简单 对于将大模型 API 深度集成到业务流程中的团队而言&#xff0c;成本管…...

知识图谱与智能体如何革新小说创作:graphify-novel项目深度解析

1. 项目概述&#xff1a;用知识图谱为你的小说创作装上“第二大脑”如果你是一位小说创作者&#xff0c;无论是网文作者、传统文学写作者&#xff0c;还是游戏叙事设计师&#xff0c;你一定经历过这样的痛苦时刻&#xff1a;写到第30章&#xff0c;突然想不起某个配角在第5章出…...