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

Leetcode-day30-动态规划-不同路径

62. 不同路径

这个题动态规划的特征比较明显,我们就看终点,到终点的不同路径就等于要么从他上面一格往下走一格,要么从他左边一个往右走一格,所以可以得出递推公式。

动态规划五部曲:
1. 确定dp数组的含义,这里是到达i,j的不同路径数

2.确定递推公式,dp[m][n] = dp[m-1][n]+dp[m][n-1]

3.dp初始化,这里是第一行初始化和第一列初始化,都是1

4.遍历方向,从上往下从左到右,根据递推公式得出来的,或者从左往右,从上到下。

5.打印dp数组,这里打印出终点位置的dp数组值就可以。

class Solution {public int uniquePaths(int m, int n) {//1. DP数组,到达第i,j有多少条不同的路径int[][] dp = new int[m][n];//2.递推公式: dp[m][n] = dp[m-1][n]+dp[m][n-1]//3.dp数组初始化:for(int i=0;i<m;i++){dp[i][0]=1;}for(int i=0;i<n;i++){dp[0][i]=1;}//4.遍历方向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

这个题和上个题类似,首先可以确定用动态规划来做,然后按照五部曲

1. dp数组代表什么,i,j坐标下的不同路径数

2.递推公式,dp[m][n] = dp[m-1][n]+dp[m][n-1]

3.dp数组初始化,和上一题不同的是第一行,或者第一列,如果中间已经有障碍那后面就都是0。

4.遍历方向,还是和上一题一样,不一样的是如果遇到障碍就直接这个位置置0,continue,不需要递推

5.打印dp数组。打印终点的dp值

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • STM32G474的HRTIM用作时基定时器
  • R语言统计分析——回归分析的改进措施
  • 【机器学习】YOLO 关闭控制台推理日志
  • 2024前端面试题-js篇
  • ffmpeg6.1集成Plus-OpenGL-Patch滤镜
  • Java二十三种设计模式-解释器模式(23/23)
  • web开发html前端使用javascript脚本库JsBarcode生成条形码(条码)
  • Vue的生命周期了解
  • 数学基础 -- 线性代数之行列式不变性推导
  • linux文本分析工具grep、sed和awk打印输出文本的单双奇偶行(grep也可以打印奇偶行)以及熟悉的ssh命令却有你不知道的一些用法
  • 记录一下在IIS上部署服务器上遇到的一系列问题及解决方案
  • 创建github个人站点
  • CF 965 C. Perform Operations to Maximize Score
  • 深度学习从入门到精通——大模型认知理解
  • vue.js的设计与实现(响应系统1)
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • Android优雅地处理按钮重复点击
  • create-react-app项目添加less配置
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Docker: 容器互访的三种方式
  • docker-consul
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • JavaScript标准库系列——Math对象和Date对象(二)
  • leetcode-27. Remove Element
  • log4j2输出到kafka
  • maya建模与骨骼动画快速实现人工鱼
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • PHP 小技巧
  • Protobuf3语言指南
  • Python - 闭包Closure
  • React as a UI Runtime(五、列表)
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • spring boot 整合mybatis 无法输出sql的问题
  • Spring Cloud中负载均衡器概览
  • vue-cli在webpack的配置文件探究
  • 如何解决微信端直接跳WAP端
  • 探索 JS 中的模块化
  • 通信类
  • 我的面试准备过程--容器(更新中)
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 在Unity中实现一个简单的消息管理器
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​zookeeper集群配置与启动
  • ​香农与信息论三大定律
  • #define,static,const,三种常量的区别
  • #if #elif #endif
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (13)Hive调优——动态分区导致的小文件问题
  • (145)光线追踪距离场柔和阴影
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度