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

63. 不同路径 II

题目链接:

63. 不同路径 II

题目描述:

给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角(即 grid[0][0])。机器人尝试移动到 右下角(即 grid[m - 1][n - 1])。机器人每次只能向下或者向右移动一步。

网格中的障碍物和空位置分别用 1 和 0 来表示。机器人的移动路径中不能包含 任何 有障碍物的方格。

返回机器人能够到达右下角的不同路径数量。

测试用例保证答案小于等于 2 * 109

题目分析:

该题我选择用二维的dp数组来进行动态规划,最后位置的dp值即不同的路径数

官方题解使用的是二维变一维的滚动数组思想,二维就是比一维多判断几个条件,但更好理解一些

题解:

int uniquePathsWithObstacles(int** obstacleGrid, int obstacleGridSize, int* obstacleGridColSize) {int row = obstacleGridSize;int col = *obstacleGridColSize;int dp[row][col];    memset(dp, 0, sizeof(dp));              // 将dp数组中的值全赋值为0    for(int i = 0; i < row; i++){           // 两重for循环遍历路径数组for(int j = 0; j < col; j++){            if(obstacleGrid[i][j]){         // 当前位置为障碍物时,dp数组中的值为0dp[i][j] = 0;continue;}if(i == 0 && j == 0){           // 当前位置为初始位置且不为障碍物dp[i][j] = 1;}else if(i-1 >= 0 && j-1 >= 0){ // 不是最上面的边或者最左边的边时dp[i][j] = dp[i-1][j] + dp[i][j-1];}else if(i-1 >= 0){             // 是最左边的边dp[i][j] = dp[i-1][j];}else{                          // 是最上面的边dp[i][j] = dp[i][j-1];}}}return dp[row-1][col-1];
}

相关文章:

  • siparmyknife:SIP协议渗透测试的瑞士军刀!全参数详细教程!Kali Linux教程!
  • 运维打铁:生产服务器用户权限管理方案全解析
  • 前端地图数据格式标准及应用
  • vue项目表格甘特图开发
  • 告别“盘丝洞”车间:4-20mA无线传输如何重构工厂神经网?
  • Python打卡训练营学习记录Day34
  • sso登录(单点登录)实现
  • MySQL强化关键_016_存储引擎
  • JavaScript面试题之匿名函数
  • 数据结构第1章 (竟成)
  • debian12下安装搜狗输入法
  • 伊吖学C笔记(3、字符、分支结构)
  • Unreal渲染源码简读(一)RHI/Shader
  • Minecraft Fabric - java.lang.NoClassDefFoundError HttpUriRequest
  • Spring Boot是什么?MybatisPlus常用注解,LambdaQueryWrapper常用方法
  • OpenHarmony 4.1版本应用升级到5.0版本问题记录及解决方案
  • vue开发中常用方法笔记
  • 在公司快速查看与固定内网IP地址的完整指南
  • 全链路解析:影刀RPA+Coze API自动化工作流实战指南
  • 2025电工杯A题数据-光伏电站发电功率预测数据 收集策略
  • 可以免费下载ppt模板的网站/个人网页制作成品欣赏
  • 京东网上商城购物平台/seo网站排名优化案例
  • 做一个网站需要花费多少钱/搜索引擎优化好做吗
  • 六安网站制作/制作app平台需要多少钱
  • 网站后台内容管理/seo咨询
  • 浪琴女士手表网站/制作网站的最大公司