当前位置: 首页 > 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),也可以优化

相关文章:

  • ✨通义万相 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协议?它有哪些特点?
  • 那里有个人做网站的/房地产销售
  • 百度seo排名曝光行者seo/seo学院
  • 网站建设公司好/外贸网站推广服务
  • 知名的集团门户网站建设企业/美国疫情最新数据消息
  • 网站设计的公司怎么样/个人永久免费自助建站
  • 做什么网站赚钱/互联网运营推广公司