【算法与数据结构】63、LeetCode不同路径 II

文章目录

  • 一、题目
  • 二、解法
  • 三、完整代码

所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。

一、题目

在这里插入图片描述

二、解法

  思路分析:参考【算法与数据结构】62、LeetCode不同路径的题目,可以发现本题仅仅是多了障碍物。我们还是用动态规划来做。有障碍物的地方无法到达,因此路径数量为0,只需要将障碍物位置的dp数组记为0,除此之外障碍物后面的位置有可能无法到达(程序当中的两个if break语句)。
  程序如下

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

复杂度分析:

  • 时间复杂度: O ( r o w ∗ c o l ) O(row*col) O(rowcol),,row和col分别是地图的行和列。
  • 空间复杂度: O ( r o w ∗ c o l ) O(row*col) O(rowcol)

三、完整代码

# include <iostream>
# include <vector>
using namespace std;class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int row = obstacleGrid.size(), col = obstacleGrid[0].size();vector<vector<int>> dp(row, vector<int>(col, 0));for (int i = 0; i < col; i++) {if (obstacleGrid[0][i] == 1) break;dp[0][i] = 1;}for (int j = 0; j < row; j++) {if (obstacleGrid[j][0] == 1) break;dp[j][0] = 1;}for (int i = 1; i < row; i++) {for (int j = 1; j < col; j++) {if (obstacleGrid[i][j] == 0) dp[i][j] = dp[i - 1][j] + dp[i][j - 1];else dp[i][j] = 0;}}return dp[row - 1][col - 1];}
};int main() {//vector<vector<int>> obstacleGrid = { {0, 0, 0}, {0, 1, 0}, { 0, 0, 0 } };vector<vector<int>> obstacleGrid = { {0, 1}, {0, 0} };Solution s1;int result = s1.uniquePathsWithObstacles(obstacleGrid);cout << result << endl;system("pause");return 0;
}

end

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

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

相关文章

springboot下载图片的简单处理方式

参考地址 springboot&#xff1a;各种下载文件的方式_springboot下载文件-CSDN博客 开箱即用实战 GetMapping("/t1")public void down1(HttpServletResponse response) throws Exception {response.reset();response.setContentType("application/octet-strea…

STM32F103标准外设库——认识STM32(一)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…

MySQL存储引擎索引事务

一.存储引擎 1.创建的存储引擎 MyISAM 不支持事务、也不支持外键&#xff0c;索引采用非聚集索引&#xff0c;其优势是访问的速度快&#xff0c;对事务完整性没有要求&#xff0c;以 SELECT 、 INSERT 为主的应用基本上都可以使用这个存储引擎来创建表。 MyISAM 的表在磁盘上…

从零学Java 线程的状态

Java 线程的状态 文章目录 Java 线程的状态线程的基础状态1 常见方法1.1 休眠1.2 放弃1.3 加入1.4 优先级1.5 线程打断1.6 守护线程1.7 线程的状态 - 等待 2 线程安全问题2.1 线程同步: 同步代码块2.2 线程同步: 同步方法2.3 同步规则2.4 线程的状态 - 阻塞2.5 特殊现象: 死锁 …

新版网易滑块

突然发现脸皮厚根本没用&#xff0c;大冬天的&#xff0c;风吹过来还是会冷。 大哥们多整件衣裳&#xff0c;好冷&#xff01;&#xff01;&#xff01;&#xff01; 网易更新了&#xff0c;这俩 dt跟f值。 dt为 这里返回的&#xff0c;忽略掉他。 data参数中的d值&#xff…

未来气膜体育馆的发展趋势是什么?

未来气膜体育馆的发展趋势是多方面的&#xff0c;以下是其中几个方面的趋势。 起初&#xff0c;随着人们对体育运动的需求不断增加&#xff0c;气膜体育馆的建设和使用将成为一种趋势。气膜体育馆具有灵活性和可移动性的特点&#xff0c;可以快速搭建和拆除&#xff0c;能够适…

低代码平台,新型应用程序开发神器

目前低代码平台如火如荼。这一新兴技术为企业提供了一种高效、灵活、快速开发应用程序的方法&#xff0c;并在短时间内取得了巨大成功。然而&#xff0c;我们不得不面对低代码平台的优劣以及其所带来的挑战。本文将深入探讨低代码平台在不同情况下的优劣势&#xff0c;并与您分…

AI能否真的取代程序员?

一个Java程序员从接到需求到最终开发完功能的流程大致如下 首先是理解原型图&#xff0c;设计表结构根据表结构编写增删改查代码与前端联调&#xff0c;完成功能开发 那么以上步骤AI能不能完成呢&#xff1f; 让我们试一下&#xff1a; 第一步&#xff0c;使用 AI助手 解析流…

设计模式之状态模式【行为型模式】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某…

postman环境变量全局变量设置

postman环境变量、全局变量设置 在公司中&#xff0c;一般会存在开发环境、测试环境、线上环境等&#xff0c;如果需要在不 同的环境下切换做接口测试&#xff0c;显然我们需要把所有接口的域名进行修改&#xff0c;如果接 口测试用例较多&#xff0c;那么修改会非常费力&…

Redis基础系列-哨兵模式

Redis基础系列-哨兵模式 文章目录 Redis基础系列-哨兵模式1. 引言2. 什么是哨兵模式&#xff1f;3. 哨兵模式的配置4. 哨兵模式的启动和验证4.1 主master宕机&#xff0c;看会出现什么问题4.2 重启6379主机 5. 哨兵模式的工作原理和选举原理5.1. SDown主观下线&#xff08;Subj…

基于Python实现地标景点识别

目录 前言简介地标景点识别的背景 地标景点识别的原理卷积神经网络&#xff08;CNN&#xff09;的基本原理地标景点识别的工作流程 使用Python实现地标景点识别的步骤数据收集数据预处理构建卷积神经网络模型模型训练 参考文献 前言 简介 地标景点识别是一种基于计算机视觉技术…

Qt SDL2播放Wav音频

这里介绍两种方法来实现Qt播放Wav音频数据。 方法一&#xff1a;使用QAudioOutput pro文件中加入multimedia模块。 #include <QApplication> #include <QFile> #include <QAudioFormat> #include <QAudioOutput>int main(int argc, char *argv[]) {…

欧姆龙plc学习NJ系列CJ系列资料Sysmac Studio编程软件视频教程

Sysmac Studio是欧姆龙公司开发的一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;用于编程和配置欧姆龙PLC&#xff08;可编程逻辑控制器&#xff09;和其他自动化设备。Sysmac Studio支持以下型号的欧姆龙PLC&#xff1a;1. NJ系列&#xff1a;NJ501、NJ301、NJ101、…

【算法】算法(模拟、指针等)解决字符串类题目(C++)

文章目录 1. 前言2. 解决 字符串类算法题14.最长公共前缀5.最长回文子串67.二进制求和43.字符串相乘 1. 前言 字符串题目有很多种&#xff0c;这里筛选几个考察模拟、双指针等的题目&#xff0c;并用相关算法解决。 2. 解决 字符串类算法题 14.最长公共前缀 思路 题意分析&…

【固态钽表面贴装电容】 MIL-PRF-55365 美军标

钽电解电容器是体积效率、电气参数稳定、高可靠性和长使用寿命是主要考虑因素的应用的首选。 钽/氧化钽/二氧化锰系统的稳定性和对高温的耐受性使固体钽消泡器成为当今表面贴装组装技术的合适选择。 钽不是纯净状态的。 相反&#xff0c;它通常存在于许多氧化物矿物中&#xf…

编曲混音FL Studio21.2对电脑有什么配置要求

FL Studio 21是一款非常流行的音乐制作软件&#xff0c;它可以帮助音乐人和制作人创作出高质量的音乐作品。然而&#xff0c;为了保证软件的稳定性和流畅性&#xff0c;用户需要知道FL Studio 21对电脑的配置要求。本文将介绍FL Studio 21的配置要求&#xff0c;以帮助用户选择…

SQL基础知识4

一、内置函数 1、数值函数 1.1基本函数 1.2时间函数 二、存储过程 1、概述 2、分类 3、创建 4、总结 多了很多传递参数 三、存储函数 说明定义 例子 案例1 方法一 方法二 案例2 例子3 对比 复习

【贪心】受标签影响的最大值

/** 贪心&#xff1a;要想使子集分数最大&#xff0c;应选取values中较大的值。* 思路&#xff1a;使用一个哈希表来记录每个标签使用的次数&#xff0c;相同标签使其不超过useLimit限制* 对values进行降序排序&#xff0c;并对其进行遍历只要标签使用次数不超过限制就…

住宅IP和数据中心IP有何区别?为什么住宅IP更适合爬虫采集?

随着互联网的普及和发展&#xff0c;IP地址作为网络通信中的重要标识&#xff0c;其类型和应用场景也在不断变化。其中&#xff0c;住宅IP和数据中心IP是两种常见的IP类型&#xff0c;它们在某些方面存在明显的区别。本文将探讨这两种IP类型的区别以及为什么住宅IP更适合爬虫采…