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

代码随想录day39 || 动态规划 || 不同路径

62.不同路径

● 力扣题目链接
● 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。
● 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。
● 问总共有多少条不同的路径?

思路

● dp数组初始化,第一行第一列是1,然后某个位置只能从上面或者左面过来
● 时间复杂度:O(m × n)
● 空间复杂度:O(m × n)

代码

class Solution {public int uniquePaths(int m, int n) {int[][] dp = new int[m][n];for (int i = 0; i < n; i++) {dp[0][i] = 1;}for (int i = 0; i < m; i++) {dp[i][0] = 1;}for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}return dp[m - 1][n - 1];}
}

63. 不同路径 II

● 力扣题目链接
● 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
● 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
● 现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?

思路

● 在初始化和遍历的时候加上是否是障碍物的判断

代码

class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m = obstacleGrid.length;int n = obstacleGrid[0].length;int[][] dp = new int[m][n];for (int i = 0; i < m && obstacleGrid[i][0] == 0; i++) {dp[i][0] = 1;}for (int i = 0; i < n && obstacleGrid[0][i] == 0; i++) {dp[0][i] = 1;}for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {dp[i][j] = (obstacleGrid[i][j] == 0) ? dp[i - 1][j] + dp[i][j - 1] : 0;}}return dp[m - 1][n - 1];}
}
// 空间优化
class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m = obstacleGrid.length;int n = obstacleGrid[0].length;int[] dp = new int[n];for (int i = 0; i < n && obstacleGrid[0][i] == 0; i++) {dp[i] = 1;}for (int i = 1; i < m; i++) {for (int j = 0; j < n; j++) {if (obstacleGrid[i][j] == 1) dp[j] = 0;else if (j != 0) dp[j] += dp[j - 1];}}return dp[n - 1];}
}
http://www.lryc.cn/news/168525.html

相关文章:

  • 电商平台API接口采集电商平台淘宝天猫京东拼多多数据获取产品详情信息,销量,价格,sku案例
  • The ‘<‘ operator is reserved for future use. 错误解决
  • vulnhub靶机Thoth-Tech
  • 不可思议,无密码登录所有网站!
  • 深度学习编译器关键组件
  • 【C++】string类模拟实现下篇(附完整源码)
  • Android高级开发-APK极致优化
  • Rocketmq--消息驱动
  • 华为云云耀云服务器L实例评测|centos系统搭建git私服
  • 苹果CMS主题 MXonePro二开优化修复开源版影视网站源码
  • 【新版】系统架构设计师 - 软件架构设计<轻量级架构>
  • 系统架构设计专业技能 ·结构化需求分析 - 数据流图
  • linux内核分析:线程和进程创建,内存管理
  • SpringMvc根据返回值类型不同处理响应
  • jq命令安装与使用
  • 网络面试题汇总
  • Java————初始集合框架
  • SpringMvc如何向context域设置数据
  • 深入探索智能问答:从检索到生成的技术之旅
  • 02_Flutter自定义Sliver组件实现分组列表吸顶效果
  • uniapp实现大气质量指标图(app端小程序端均支持,app-nvue不支持画布)
  • Oracle for Windows安装和配置——2.1.Oracle for Windows安装
  • 2.SpringEL bean引用实例
  • 通用商城项目(下)之——Nginx的安装及使用
  • 滑动时间窗口的思想和实现,环形数组,golang
  • SpringBoot 使用异步方法
  • Django框架学习大纲
  • 基于matlab实现的电力系统稳定性分析摆幅曲线代码
  • mybatis基本构成mybatis与hibernate的区别添加mybatis支持
  • c++23中的新功能之十四输入输出指针