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

LeetCode-63-不同路径Ⅱ-动态规划

题目描述:
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。
现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?
网格中的障碍物和空位置分别用 1 和 0 来表示。

题目链接: LeetCode-63-不同路径Ⅱ

解题思路:详见注释~

代码实现:

class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {// 1. dp[i][j]含义:走到(i,j)位置有 dp[i][j]种不同的路径// 2. 递推公式:dp[i][j]依赖与 dp[i-1][j] 和 dp[i][j-1]的路径个数,//              前提条件是 dp[i][j]!=1//                  dp[i][j] = dp[i-1][j] + dp[i][j-1]// 3. 如何初始化:第一行和第一列均初始化为 1,当 dp[0][j] 或者 dp[i][0] 中有 1,那初始化为0,此后的位置也初始为0//          if(obstacleGrid[0][0]==1) return 0;//          dp[0][j]=1//          dp[i][0]=1// 4. 遍历顺序:从左上到右下int m =obstacleGrid.length;int n= obstacleGrid[0].length;int[][] dp = new int[m][n];if (obstacleGrid[0][0]==1){return 0;}// 初始化列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++) {if (obstacleGrid[i][j]==0){dp[i][j] = dp[i-1][j] + dp[i][j-1];}}}return dp[m-1][n-1];}
}
http://www.lryc.cn/news/167944.html

相关文章:

  • unity 使用Photon进行网络同步
  • 大数据课程M1——ELK的概述
  • C# byte[] 如何转换成byte*
  • MySQL与Oracle的分页
  • git基本手册
  • 每日一题(两数相加)
  • 恒运资本:沪指震荡涨0.28%,医药板块强势拉升,金融等板块上扬
  • 【计算机网络】Tcp详解
  • 最简单的laravel不使用任何扩展导出csv
  • Android studio 断点调试、日志断点
  • 服务器数据恢复-热备盘同步过程中硬盘离线的RAID5数据恢复案例
  • Python 使用input获取用户输入
  • Python 可迭代对象、迭代器、生成器
  • HTML的有序列表、无序列表、自定义列表
  • 银河麒麟安装Docker-国产化-九五小庞
  • 数据库与身份认证
  • LabVIEW开发锅炉汽包水位的监督控制和模拟
  • 2023-简单点-树莓派安装ncnn框架
  • Docker核心原理与实操
  • 虚幻引擎 UE5 增强输入系统
  • Mac 安装软件各种报错解决方案
  • leetcode做题笔记142. 环形链表 II
  • DuDuTalk:4G语音工牌,如何实现家庭上门维修服务过程的智能化管理?
  • Mybatis常见面试题总结
  • 数字IC设计之时序分析基础概念汇总
  • 1.centos7安装docker
  • 基于elasticsearch-8.8.2 kibana-8.8.2 搭建一个文搜图系统demo
  • 第26节-PhotoShop基础课程-形状工具组-画板
  • 第一次课,通过进程信息和服务信息识别当前计算机运行程序(预习版)
  • ChatGPT 或其它 AI,能用在文书创作上吗?