代码随想录 -- 动态规划 -- 不同路径 II

63. 不同路径 II - 力扣(LeetCode)

思路:

dp[i][j]含义:走到第(i,j)个格子有多少种方法。

递推公式:

  • 当网格中有障碍物时:此路不通,continue;
  • 当网格中没有障碍物时:dp[i][j]=dp[i-1][j]+dp[i][j-1]。

初始化:(一开始整个dp数组都初始化为0)

针对第一行第一列:

  • 如果没有遇到障碍物,初始化为1;
  • 如果遇到障碍物,直接break。

遍历顺序:从上到下,从左到右

python 复制代码
class Solution(object):
    def uniquePathsWithObstacles(self, obstacleGrid):
        n=len(obstacleGrid)
        m=len(obstacleGrid[0])
        if obstacleGrid[0][0]==1 or obstacleGrid[n-1][m-1]==1:return 0
        dp=[[0 for _ in range(m)] for _ in range(n)]
        for i in range(n):
            if obstacleGrid[i][0]==0:
                dp[i][0]=1
            else:
                break
        for j in range(m):
            if obstacleGrid[0][j]==0:
                dp[0][j]=1
            else:
                break
        for i in range(1,n):
            for j in range(1,m):
                if obstacleGrid[i][j]==1:
                    continue
                else:
                    dp[i][j]=dp[i-1][j]+dp[i][j-1]
        return dp[n-1][m-1]
相关推荐
AI工程架构师1 小时前
通常说算力是多少 FLOPS,怎么理解,GPU和CPU为什么差异这么大
算法
祈安_1 小时前
Java实现循环队列、栈实现队列、队列实现栈
java·数据结构·算法
明月_清风2 小时前
Python 内存手术刀:sys.getrefcount 与引用计数的生死时速
后端·python
明月_清风2 小时前
Python 消失的内存:为什么 list=[] 是新手最容易踩的“毒苹果”?
后端·python
归去_来兮15 小时前
拉格朗日插值算法原理及简单示例
算法·数据分析·拉格朗日插值
Flittly17 小时前
【从零手写 ClaudeCode:learn-claude-code 项目实战笔记】(3)TodoWrite (待办写入)
python·agent
千寻girling21 小时前
一份不可多得的 《 Django 》 零基础入门教程
后端·python·面试
千寻girling21 小时前
Python 是用来做 AI 人工智能 的 , 不适合开发 Web 网站 | 《Web框架》
人工智能·后端·算法
颜酱1 天前
一步步实现字符串计算器:从「转整数」到「带括号与优化」
javascript·后端·算法
databook1 天前
探索视觉的边界:用 Manim 重现有趣的知觉错觉
python·动效