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

代码随想录学习Day 34

62.不同路径

题目链接

讲解链接

动归五部曲:
1.确定dp数组及其下标的含义:dp[i][j]的含义是从(0, 0)走到(i, j)所需的步数;

2.确定递推公式:因为只能往右或者往下,所以dp[i][j] = dp[i - 1][j] + dp[i][j - 1]。

3.dp数组初始化:初始化为m * n的全1数组。

4.确定遍历顺序:因为递推公式为dp[i][j] = dp[i - 1][j] + dp[i][j - 1],dp[i][j]都是从其上方和左方推导而来,那么从左到右一层一层遍历就可以了。

5.举例推导dp数组:m = 3,n = 7时,dp = [[1, 1, 1, 1, 1, 1, 1], [1, 2, 3, 4, 5, 6, 7], [1, 3, 6, 10, 15, 21, 28]]

class Solution:def uniquePaths(self, m: int, n: int) -> int:dp = [[1] * n for _ in range(m)]  # 初始化为全1数组,因为第一列和第一行一定都是1for i in range(1, m):for j in range(1, n):dp[i][j] = dp[i - 1][j] + dp[i][j - 1]  # 递推公式return dp[-1][-1]

63.不同路径Ⅱ 

题目链接

讲解链接

本题大体思路同上,只需要对障碍物处额外处理一下。

在初始化时,如果第一列或第一行有障碍物,则将该位置的dp至设为0;在后续遍历过程中若遇到障碍物,则同样将该位置设为0,之后按照与上一题同样的方法计算即可。

class Solution:def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:i, j = 0, 0m, n = len(obstacleGrid), len(obstacleGrid[0])dp = [[0] * n for _ in range(m)]while i < m and obstacleGrid[i][0] == 0:  # 初始化列,第一列除了障碍物处均为1dp[i][0] = 1i += 1while j < n and obstacleGrid[0][j] == 0:  #  同上,第一行除障碍均为1dp[0][j] = 1j += 1for i in range(1, m):for j in range(1, n):if obstacleGrid[i][j] == 1:  # 若遇到障碍处则将该位置的dp置为0dp[i][j] = 0else:dp[i][j] = dp[i - 1][j] + dp[i][j - 1]  # 递推公式return dp[-1][-1]

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

相关文章:

  • 由于找不到MSVCP120D.dll,无法继续执行代码。重新安装程序可能会解决此问题
  • 【前端】输入时字符跳动动画实现
  • C语言面试重点问题
  • antlr4略解
  • 超级好用的C++实用库之文件目录操作
  • 结合kimi chat的爬虫实战思路
  • UnsupportedClassVersionError异常如何解决?
  • LeetCode热题100|动态规划Part.1|70.爬楼梯、118.杨辉三角、198.打家劫舍
  • python 根据网址和关键词批量下载影像
  • 爬虫-无限debug场景 解决方式
  • [链表专题]力扣206, 203, 19
  • 秋招后端开发面试题 - MySQL基础
  • 力扣每日一题113:路径总和||
  • Thinkphp5 中常见的session 操作方法
  • inBuilder 低代码平台新特性推荐 - 第十八期
  • 部署xwiki服务需要配置 hibernate.cfg.xml如何配置?
  • 1376:信使(msner)
  • Hadoop3:HDFS的架构组成
  • P2910 [USACO08OPEN] Clear And Present Danger S
  • ES6 对象方面的新特性
  • GO语言核心30讲 进阶技术 (第一部分)
  • [力扣题解]225. 用队列实现栈
  • Leetcode—2105. 给植物浇水 II【中等】
  • wordpress外贸建站公司歪建站新版网站上线
  • 关于二手车系统学习--登录模块
  • 若依生成代码的步骤
  • 深度学习论文: LightGlue: Local Feature Matching at Light Speed
  • 全面解析C++11与C++20线程(含内容)
  • 【八股】消息中间件
  • 【17-Ⅰ】Head First Java 学习笔记