力扣63. 不同路径 II

动态规划

  • 思路:
    • 假设 dp[i][j] 是到达第 i 行、第 j 列的路径数量;
    • 因为只能向右或者向下移动,所以状态转移方程:
      • 当v[i][j] = 0时,dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
      • 当v[i][j] = 1时,dp[i][j] = 0;
      • 在第一行中,即 i = 0 时,只能由同一行左边格子路由:
        • 当v[0][j] = 0 时,dp[0][j] = dp[0][j - 1];
        • 当v[0][j] = 1 时,dp[0][j] = 0;
      • 在第一列中,即 j = 0 时,只能由同一列上边格子路由:
        • 当v[i][0] = 0 时,dp[i][0] = dp[i - 1][0];
        • 当v[i][0] = 1 时,dp[i][0] = 0;
    • 边界条件:
      • 当 v[0][0] = 0 时,dp[0][0] = 1;
      • 当 v[0][0] = 1 时,dp[0][0] = 0;
class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int row = obstacleGrid.size();if (row == 0) {return 0;}int column = obstacleGrid[0].size();if (column == 0) {return 0;}std::vector<std::vector<int>> dp(row, std::vector<int>(column));if (obstacleGrid[0][0] == 1) {dp[0][0] = 0;} else {dp[0][0] = 1;}// first columnfor (int i = 1; i < row; ++i) {if (obstacleGrid[i][0] == 1) {dp[i][0] = 0;} else {dp[i][0] = dp[i - 1][0];}}// first rowfor (int j = 1; j < column; ++j) {if (obstacleGrid[0][j] == 1) {dp[0][j] = 0;} else {dp[0][j] = dp[0][j - 1];}}for (int i = 1; i < row; ++i) {for (int j = 1; j < column; ++j) {if (obstacleGrid[i][j] == 1) {dp[i][j] = 0;} else {dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}}return dp[row - 1][column - 1];}
};
  • 空间优化:
    • 本算法空间复杂度为 O(nm),可以进一步优化成 O(m),再想一想吧 ... ...

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

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

相关文章

C#调用zlib1.dll错误排查

C#编写64位程序&#xff0c;使用下列代码调用程序时出现 试图加载格式不正确的程序 报错&#xff0c;排查发现zlib1.dll文件为32位的&#xff0c;找了64位的替换一下就行了。&#xff08;PS&#xff1a;在我开发电脑上就没有任何问题&#xff0c;在部署电脑上就会报错&#xff…

Sql标准梳理

SQL&#xff08;Structured Query Language&#xff09;是一种用于管理关系型数据库管理系统&#xff08;RDBMS&#xff09;的标准化语言。SQL标准由国际标准化组织&#xff08;ISO&#xff09;和美国国家标准化组织&#xff08;ANSI&#xff09;制定和维护&#xff0c;旨在提供…

SpringIOC之FilterType

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

企业应用开发中.NET EF常用哪种模式?

EF/EF Core介绍 Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术&#xff0c;EF Core 是适用于 .NET 的现代对象数据库映射器。它支持 LINQ 查询、更改跟踪、更新和架构迁移。EF Core 通过提供程序插件 API 与 SQL Server、…

【Mysql】myisam和innodb的区别?

0 回答 myisam引擎是5.1版本之前的默认引擎,支持全文检索、压缩、空间函数等,但是不支持事务和行级锁,所以一般用于有大量查询少量插入的场景来使用,而且myisam不支持外键,并且索引和数据是分开存储的。innodb是基于聚簇索引建立的,和myisam相反它支持事务、外键,并且通…

spring 笔记六 SpringMVC 获得请求数据

文章目录 SpringMVC 获得请求数据获得请求参数获得基本类型参数获得POJO类型参数获得数组类型参数获得集合类型参数请求数据乱码问题参数绑定注解requestParam获得Restful风格的参数获得Restful风格的参数自定义类型转换器获得Servlet相关API获得请求头RequestHeaderCookieValu…

js解析.shp文件

效果图 原理与源码 本文采用的是shapefile.js工具 这里是他的npm地址 https://www.npmjs.com/package/shapefile 这是他的unpkg地址&#xff0c;可以点开查看源码 https://unpkg.com/shapefile0.6.6/dist/shapefile.js 这个最关键的核心问题是如何用这个工具&#xff0c;网上…

docker容器引擎

1、安装docker yum install docker 2、启动docker并设置为开机自动启动 systemctl start docker systemctl enable docker 3、查看版本 docker version 4、修改为国内镜像源 vi /etc/docker/daemon.json { “registry-mirrors”: [“http://hub-mirror.c.163.com”, “https:/…

使用Redis+AOP优化查询性能

应用场景 在某些场景下&#xff0c;我们会经常查询某些特定数据&#xff0c;例如用户跳转各种页面都会查询用户具备该页面权限。 这种需求在流量较小的情况下没有什么问题&#xff0c;但如果出现大流量进行各种页面跳转的花&#xff0c;频繁IO对系统性能是有着非常严重的影响的…

Vue3-18-侦听器watch()、watchEffect() 的基本使用

什么是侦听器 个人理解&#xff1a;当有一个响应式状态&#xff08;普通变量 or 一个响应式对象&#xff09;发生改变时&#xff0c;我们希望监听到这个改变&#xff0c;并且能够进行一些逻辑处理。那么侦听器就是来帮助我们实现这个功能的。侦听器 其实就是两个函数&#xff…

〖大前端 - 基础入门三大核心之JS篇(54)〗- 原型和原型链

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;哈哥撩编程&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xff0c;目前在公司…

Android之Apk相关操作,以32位或64位运行apk,区分apk支持CPU架构的办法

一、以32位或64位安装运行apk 连接手机&#xff0c;准备好apk文件&#xff0c;打开cmd 32位&#xff1a; adb install --abi armeabi-v7a 打包的Apk路径64位 adb install --abi arm64-v8a 打包的apk路径二、区分32位和64位包 参考链接&#xff1a; https://blog.51cto.com/…

JavaScript算法46- 最长连续序列(leetCode:128middle)

128. 最长连续序列 一、题目 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 输入&#xff1a;nums [100,4,200,1,3,2] 输出…

曹操出行集成:无代码API连接广告推广与用户运营

曹操出行集成的必要性 随着科技的不断进步&#xff0c;无代码API集成已经成为企业提升效率、优化营销策略的重要手段。对于新能源汽车共享服务领导者曹操出行而言&#xff0c;将其服务集成至企业营销系统中&#xff0c;不仅可以提升客户体验&#xff0c;还能加强品牌的市场竞争…

微信小程序 全局共享数据 mobx

前言 全局数据共享&#xff08;又叫做&#xff1a;状态管理&#xff09;是为了解决组件之间数据共享的问题。开发中常用的全局数据共享方案有&#xff1a;Vuex、Redux、MobX 等。 一. 安装 npm install --save mobx-miniprogram4.13.2 mobx-miniprogram-bindings2.1.5 安装完…

基于主动安全的AIGC数据安全建设

面对AIGC带来的数据安全新问题&#xff0c;是不是就应该一刀切禁止AIGC的研究利用呢&#xff1f;答案是否定的。要发展AIGC&#xff0c;也要主动积极地对AIGC的数据安全进行建设。让AIGC更加安全、可靠的为用户服务。为达到此目的&#xff0c;应该从三个方面来开展AIGC的数据安…

【WebRTC】用WebRTC做即时视频聊天应用

【配套项目源码】 打开即用,设置一个免费的Agora账户就可以实现视频电话。非常好的WebRTC学习和应用项目。 用VSCode打开即可。 https://download.csdn.net/download/weixin_41697242/88630069 【什么是WebRTC?】 WebRTC是一套基于JS的API,能够建立端对端的直接通信,实…

后端接口开发-web前台请求接口对后台数据库增删改查-实例

一、后端接口开发的逻辑是&#xff1a; 1.Application项目启动 2.前台接口Url请求后台 3.Controller控制拿到前台请求参数&#xff0c;传递给中间组件Service 4.Service调用Mapper.java 5. mapper.java映射到mapper.xml中的mybatis语句&#xff0c;类似Sql语句操作数据库 6.其…

携程英语测评(已offer)

携程英语测评大概有这么几种题型&#xff1a;读出屏幕上的句子&#xff0c;读出他说过一遍的句子&#xff0c;长对话听力&#xff0c;给题目临场说一段小作文&#xff0c;语法语义判断。大概就是这五个部分吧&#xff0c;我这里主要介绍一下临场作文题 临场作文我搜集了下网上…

GDPU 数据结构 天码行空14

实验十四 查找算法的实现 一、【实验目的】 1、掌握顺序排序&#xff0c;二叉排序树的基本概念 2、掌握顺序排序&#xff0c;二叉排序树的基本算法&#xff08;查找算法、插入算法、删除算法&#xff09; 3、理解并掌握二叉排序数查找的平均查找长度。 二、【实验内容】 …