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

代码随想录第34天|动态规划

62.不同路径

代码随想录

视频讲解:动态规划中如何初始化很重要!| LeetCode:62.不同路径_哔哩哔哩_bilibili

 代码随想录

  1. dp[i,j] 数组含义:从起始位置【0,0】到【i,j】有多少种不同的路径
  2. 递推公式:只能从左侧dp[i][j-1]走一步,或者从上面dp[i-1][j]走一步
    1. dp[i][j] = dp[i-1][j]+dp[i][j-1]
  3. 初始化:最上侧和最左侧初始化
    1. dp[0][j]~dp[0][n-1] = 1;
    2. dp[i][0]~dp[m-1][0] = 1;
  4. 遍历顺序:只能从左往右遍历,从上往下遍历
  5. 打印

代码

class Solution {public int uniquePaths(int m, int n) {int[][] paths = new int[m][n];//初始化for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if(i==0){paths[0][j]=1;}else if(j==0){paths[i][0]=1;}else{paths[i][j] = paths[i-1][j]+paths[i][j-1];}}}return paths[m-1][n-1];}
}

 63.不同路径II

https://programmercarl.com/0063.%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84II.htmlhttps://programmercarl.com/0063.%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84II.html

视频讲解:动态规划,这次遇到障碍了| LeetCode:63. 不同路径 II_哔哩哔哩_bilibili

 代码随想录

只需要在上一题的基础上将有障碍物的位置标记为0就行。

任何时刻都要坚守dp五部曲:

  1. dp[i,j] 数组含义:从起始位置【0,0】到【i,j】有多少种不同的路径
  2. 递推公式:只能从左侧dp[i][j-1]走一步,或者从上面dp[i-1][j]走一步
    1. if(dp[i,j]==0) dp[i][j] = dp[i-1][j]+dp[i][j-1];
    2. else dp[i][j] = 0;//这里不需要赋零,初始化就已经完成了。
  3. 初始化:最上侧和最左侧初始化
    1. dp[0][j]~dp[0][n-1] = 1;if(dp[0][j]==1)break;
    2. dp[i][0]~dp[m-1][0] = 1;if(dp[i][0]==1)break;
  4. 遍历顺序:只能从左往右遍历,从上往下遍历
  5. 打印

需要主义,首先判断重点有无障碍物,如果有直接返回。

class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m = obstacleGrid.length;int n = obstacleGrid[0].length;int[][] dp = new int[m][n];if(obstacleGrid[m-1][n-1]==1)return 0;//横向初始化for (int i = 0; i < n&&(obstacleGrid[0][i]==0); i++) {dp[0][i]=1;}//纵向初始化for (int j = 0; j < m && (obstacleGrid[j][0] == 0); j++) {dp[j][0]=1;}//递推过程for(int i = 1;i<m;i++){for (int j = 1; j < n; j++) {if(obstacleGrid[i][j]==0){dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}}return dp[m-1][n-1];}
}

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 线程(Pthread)
  • 延时队列与redis and rabbitmq
  • 大模型学习笔记 - LLM 解码与部署
  • LVS 调度器 nat和DR模式
  • Android中的Binder
  • 【Android】安卓打开指定厂商的应用市场
  • 打开一个页面,整个过程会使用哪些协议?
  • UE基础 —— 介绍与安装
  • Python爬虫入门实战(详细步骤)
  • 【mDNS协议】通过UDP广播在局域网内实现设备自动发现和连接的协议
  • Android 应用兼容性变更调试
  • 【C语言知识-输出空格】C语言中输出空格的方法
  • C# ?的使用
  • 目标检测——X光安检数据集
  • 快速上手的企业视频会议系统需要具备哪些能力
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 0基础学习移动端适配
  • CODING 缺陷管理功能正式开始公测
  • exports和module.exports
  • gulp 教程
  • JS变量作用域
  • Linux快速复制或删除大量小文件
  • python大佬养成计划----difflib模块
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • VUE es6技巧写法(持续更新中~~~)
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 机器学习学习笔记一
  • 世界上最简单的无等待算法(getAndIncrement)
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 再次简单明了总结flex布局,一看就懂...
  • 数据可视化之下发图实践
  • ​TypeScript都不会用,也敢说会前端?
  • #162 (Div. 2)
  • (007)XHTML文档之标题——h1~h6
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (二)Linux——Linux常用指令
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (每日一问)基础知识:堆与栈的区别
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)视频码率,帧率和分辨率的联系与区别
  • (转)一些感悟
  • .net core + vue 搭建前后端分离的框架
  • .Net 路由处理厉害了
  • .NET6实现破解Modbus poll点表配置文件
  • @Autowired @Resource @Qualifier的区别
  • @component注解的分类
  • @Resource和@Autowired的区别
  • [ C++ ] STL_list 使用及其模拟实现
  • [@Controller]4 详解@ModelAttribute
  • [4]CUDA中的向量计算与并行通信模式
  • [AIGC] CompletableFuture的重要方法有哪些?