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

D34|不同路径

62.不同路径

初始思路:

1)确定dp数组以及下标的含义:

               dp[i][i]存放到第i+1行和第i+1列的方法数

2)确定递推公式:

        dp[i][i] = dp[i -1][i] + dp[i][i-1]

3)dp数组如何初始化

        第0行是1;

        第0列是1;

4)确定遍历顺序

从前到后

5)举例推导dp数组

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

题解复盘:

        基本一致 。


 63. 不同路径 II

初始思路:

在前一题的基础之上增加了对障碍数组的判断,如果第一行中有一个障碍,那么这个障碍后面的dp全部赋值为0,前面的都赋值为1;列同理。

再过程中遇到障碍,令当前dp为0即可。

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;i++){if(obstacleGrid[i][0]==1){break;}dp[i][0] = 1;}for(int i = 0;i<n;i++){if(obstacleGrid[0][i]==1){break;}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][j-1] + dp[i-1][j];}}}return dp[m-1][n-1];}
}


 

http://www.lryc.cn/news/261500.html

相关文章:

  • 【运维】Kafka高可用: KRaft(不依赖zookeeper)集群搭建
  • Python 自动化之批量处理文件(一)
  • 力扣72. 编辑距离
  • Unity中 URP Shader 的纹理与采样器的分离定义
  • Electron学习第一天 ,启动项目
  • WebService技术--随笔1
  • 如何使用Docker将.Net6项目部署到Linux服务器(一)
  • 第4章-第3节-Java中跟数组相关的几个算法以及综合应用
  • AlexNet(pytorch)
  • 【单调栈 】LeetCode321:拼接最大数
  • TikTok与虚拟现实的完美交融:全新娱乐时代的开启
  • PXI/PCIe/VPX机箱 ARM|x86 + FPGA测试测量板卡解决方案
  • ES6 面试题 | 12.精选 ES6 面试题
  • 【linux】Debian不能运行sudo的解决
  • 讲解ThinkPHP的链式操作
  • Java技术栈 —— 微服务框架Spring Cloud —— Ruoyi-Cloud 学习(二)
  • 如何进行软件测试和测试驱动开发(TDD)?
  • linux 开机启动流程
  • Mybatis 动态SQL的插入操作
  • 共建开源新里程:北京航空航天大学OpenHarmony技术俱乐部正式揭牌成立
  • 企业微信机器人发送文本、图片、文件、markdown、图文信息
  • 智能优化算法应用:基于天牛须算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • 【Hive】【Hadoop】工作中常操作的笔记-随时添加
  • DIY电脑装机机箱风扇安装方法
  • 基础算法(4):排序(4)冒泡排序
  • 鸿蒙开发之网络请求
  • PrimDiffusion:3D 人类生成的体积基元扩散模型NeurIPS 2023
  • 时序预测 | Python实现LSTM-Attention-XGBoost组合模型电力需求预测
  • 【网络安全技术】电子邮件安全PGP,SMIME
  • CSS学习笔记整理