不同路径II
时间:2021-08-08
本文章向大家介绍不同路径II,主要包括不同路径II使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题源:LeetCode
链接:https://leetcode-cn.com/problems/unique-paths-ii/
其实和上一个随笔中的不同路径一样,只是多了个障碍物,多了个判断的过程。
1 class Solution { 2 public: 3 int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { 4 if(obstacleGrid.size() == 0) return 0; 5 //define dp: dp[m][n]表示在位置[m][n]时到达右下角有dp[m][n]条路径 6 int m = obstacleGrid.size(); 7 int n = obstacleGrid[0].size(); 8 if(obstacleGrid[m - 1][n - 1] == 1) return 0; 9 vector<vector<long long>> dp(m, vector<long long>(n, 0)); 10 //base case 11 //这道题状态转移需要从最右下角开始,是确定状态base case 12 for(int i = m - 1; i >= 0; i--){ 13 if(obstacleGrid[i][n - 1] == 1) 14 break; 15 else 16 dp[i][n - 1] = 1; 17 } 18 for(int j = n - 1; j >= 0; j--){ 19 if(obstacleGrid[m - 1][j] == 1) 20 break; 21 else 22 dp[m - 1][j] = 1; 23 } 24 //for循环遍历所有状态 25 for(int i = m - 2; i >=0; i--){ 26 for(int j = n - 2; j >= 0; j--){ 27 if(obstacleGrid[i][j] == 1) 28 dp[i][j] = 0; 29 else 30 dp[i][j] = dp[i + 1][j] + dp[i][j + 1]; 31 } 32 } 33 return dp[0][0]; 34 35 36 } 37 };
官方答案中使用到了滚动数组思想,节约了空间,后面会去学习一下用法。
原文地址:https://www.cnblogs.com/hosheazhang/p/15114107.html
- 自制分布式漏洞扫描工具
- [细节剖析]X Windows中一个22年的漏洞
- android 游戏移植 (二) | SDL2.0适配 西游释厄传
- Android调用系统相册和拍照的Demo
- 黑客是如何通过RDP远程桌面服务进行攻击的
- SDL的几个宽高概念讲解(文中有福利)
- [安全科普]你必须了解的session的本质
- Android中如何动态的实现设置全屏和退出全屏
- Android 双进程Service常驻后台,无惧“一键清理”
- Android之捕获TextView超链接
- 自封装Android软键盘工具类ImeUtil
- XSS挑战第一期Writeup
- 安全公司新星Aorato推出“行为防火墙”
- 倍数提高工作效率的 Android Studio 奇技
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Spring Cloud 集成 RabbitMQ
- SpringBoot2.x集成Apache Shiro并完成简单的Case开发
- Spring Security权限框架理论与简单Case
- leetcode树之N叉树的前序遍历
- Spring Security 中的 hasRole 和 hasAuthority 有区别吗?
- python常见的import导包技巧
- 真正了解贪心算法,这是一篇精华入门总结...
- MGR修改max_binlog_cache_size参数导致异常
- 【技术创作101训练营】TensorFlow Lite的 GPU 委托(Delegate)加速模型推理
- 弄懂这 5 个问题,拿下 Python 迭代器!
- 1500字,8个问题,彻底理解堆!
- Python画王者荣耀英雄能力雷达图
- Python语言的精华:Itertools库
- MySQL为什么lsof会看到这么多临时文件
- IE浏览器主页被劫持,如何解决主页被篡改问题?