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

代码随想录算法训练营第39天(动态规划02● 62.不同路径 ● 63. 不同路径 II

动态规划part02

  • 62.不同路径
    • 解题思路
  • 63. 不同路径 II
    • 解题思路

今天开始逐渐有 dp的感觉了,题目不多,就两个 不同路径,可以好好研究一下

62.不同路径

本题大家掌握动态规划的方法就可以。 数论方法 有点非主流,很难想到。
题目链接: 62.不同路径
文章讲解: 62.不同路径
视频讲解: 62.不同路径

解题思路

 * 1. 确定dp数组下标含义 dp[i][j] 到每一个坐标可能的路径种类* 2. 递推公式 dp[i][j] = dp[i-1][j] dp[i][j-1]* 3. 初始化 dp[i][0]=1 dp[0][i]=1 初始化横竖就可* 4. 遍历顺序 一行一行遍历* 5. 推导结果 。。。。。。。。
// 动态规划
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 j = 0; j < n; j++){dp[0][j] = 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

题目链接: 63. 不同路径 II
文章讲解: 63. 不同路径 II
视频讲解: 63. 不同路径 II

解题思路

与上道题不同的点

  1. 如果在起点或终点出现了障碍,直接返回0
  2. 初始化时:for循环的终止条件,一旦遇到obstacleGrid[i][0] == 1的情况就停止dp[i][0]的赋值1的操作,dp[0][j]同理
  3. 遍历时要判断
                if(obstacleGrid[i][j] == 0){dp[i][j] = dp[i][j-1] + dp[i-1][j]; }else{dp[i][j] = 0;}  
// 动态规划
class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m = obstacleGrid.length;int n = obstacleGrid[0].length;int[][] dp = new int[m][n];//如果在起点或终点出现了障碍,直接返回0if(obstacleGrid[m-1][n-1] == 1 || obstacleGrid[0][0] == 1){return 0;}        // 初始化for(int i = 0; i < m && obstacleGrid[i][0] == 0; i++){dp[i][0] = 1;}for(int j = 0; j < n && obstacleGrid[0][j] == 0; j++){dp[0][j] = 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][j-1] + dp[i-1][j]; }else{dp[i][j] = 0;}               }}return dp[m-1][n-1];}
}

相关文章:

  • 揭秘:IT行业有哪些证书含金量高?
  • Python算法题集_矩阵置零
  • app对接优量汇收益如何?
  • CSS 控制 video 标签的控制栏组件的显隐
  • 新零售的升维体验,摸索华为云GaussDB如何实现数据赋能
  • 推动海外云手机发展的几个因素
  • jbdc的简单了解
  • 滑动一整屏
  • LeetCode:9.回文数,对整数的反转操作
  • 通过无线打通两个路由器
  • 深入探讨Python中的装饰器技术
  • C语言贪吃蛇详解
  • [软件工具]文档页数统计工具软件pdf统计页数word统计页数ppt统计页数图文打印店快速报价工具
  • Oracle笔记-为表空间新增磁盘(ORA-01691)
  • sklearn模型指标和特征贡献度查看
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 2017年终总结、随想
  • Android组件 - 收藏集 - 掘金
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • C++入门教程(10):for 语句
  • Js基础知识(一) - 变量
  • Ruby 2.x 源代码分析:扩展 概述
  • SpiderData 2019年2月25日 DApp数据排行榜
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 人脸识别最新开发经验demo
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 双管齐下,VMware的容器新战略
  • 网页视频流m3u8/ts视频下载
  • 【云吞铺子】性能抖动剖析(二)
  • AI算硅基生命吗,为什么?
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​如何防止网络攻击?
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • !!java web学习笔记(一到五)
  • # 计算机视觉入门
  • #FPGA(基础知识)
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (3)STL算法之搜索
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (黑马C++)L06 重载与继承
  • (九)信息融合方式简介
  • (实战篇)如何缓存数据
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (正则)提取页面里的img标签
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .bat文件调用java类的main方法
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET Reactor简单使用教程
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖