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

63、不同路径II

题目

解答:

初始化和特殊情况比较麻烦的dp

obstacleGrid(0,0)=1的,直接return 0即可。入口都被堵住了还怎么走。

m=n=1情况,直接判断

第一行初始化:dp[1][0]->dp[i][0] 碰到有障碍物的,从当前格子开始到末尾全部置0,可以用flag实现,也可以用逻辑与和非实现。列同理

递推:对当前(i,j)        非障碍物时:dp[i][j]=dp[i-1][j]+dp[i][j-1] 有障碍物:dp[i][j]=0 也可以用逻辑去实现

class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {if(obstacleGrid[0][0]) return 0;int m = obstacleGrid.size();int n = obstacleGrid[0].size();vector<vector<int>> dp(m,vector<int>(n));dp[0][0]=1;if(m==1&&n==1) return 1;//初始化第一列bool flagm=false;for(int i=1;i<m;i++){if(obstacleGrid[i][0]||flagm){flagm=true;dp[i][0]=0;}else {dp[i][0]=1;}}//初始化第一行bool flagn=false;for(int i=1;i<n;i++){if(obstacleGrid[0][i]||flagn){flagn = true;dp[0][i]=0;}else{dp[0][i]=1;}}for(int i=1;i<m;i++){for(int j=1;j<n;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];}
};

时间复杂度O(mn)

空间复杂度O(mn),也可以优化

http://www.dtcms.com/a/257133.html

相关文章:

  • ✨通义万相 2.1(Wan2.1)环境搭建指南:基于 CUDA 12.4 + Python 3.11 + PyTorch 2.5.1 GPU加速实战
  • 排序算法-python实现
  • C++入门实战--通讯录管理系统
  • 【闲谈】对于c++未来的看法
  • JAVA集合篇--深入理解ConcurrentHashMap图解版
  • git安装使用详细教程
  • MySQL之索引结构和分类深度详解
  • 零基础学习Redis(13) -- Java使用Redis命令
  • Java基础 6.22
  • 【学习笔记】深入理解Java虚拟机学习笔记——第10章 前端编译与优化
  • 系列一、windows中安装RabbitMQ
  • 硬件面经-具身机器人通用技术要求
  • 逻辑门电路Multisim电路仿真汇总——硬件工程师笔记
  • 信息安全管理与评估2025湖北卷路由部分答案
  • pyhton基础【14】函数四
  • 爬虫001----介绍以及可能需要使用的技术栈
  • multiprocessing.pool和multiprocessing.Process
  • DeepSeek:中国AI开源先锋的技术突破与行业革新
  • Unity中的Mathf.Clamp
  • 嵌入式软件面经(一)Q: 什么是Modbus协议?它有哪些特点?
  • C++ unordered_map基础概念、对象创建、赋值操作、大小操作、数据插入、数据删除、数据修改、代码练习 1 2
  • 面试150 加油站
  • 【已解决】 数据库INSERT操作时,Column count doesn’t match value count at row 1
  • Bytemd@Bytemd/react详解(编辑器实现基础AST、插件、跨框架)
  • 算法导论第二十五章 深度学习的伦理与社会影响
  • leetcode51.N皇后:回溯算法与冲突检测的核心逻辑
  • python案例练习
  • LLMs基础学习(八)强化学习专题(5)
  • 常见的软件测试模型有哪些?各自的特点是什么?
  • Python嵌套循环