代码随想录 -- 动态规划 -- 不同路径 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]
相关推荐
艾莉丝努力练剑23 分钟前
《递归与迭代:从斐波那契到汉诺塔的算法精髓》
c语言·学习·算法
lingggggaaaa27 分钟前
小迪安全v2023学习笔记(七十讲)—— Python安全&SSTI模板注入&项目工具
笔记·python·学习·安全·web安全·网络安全·ssti
超级皮皮5 小时前
力扣热题之stack
算法·leetcode·职场和发展
weixin_470740366 小时前
某算法的python执行汇编
汇编·python·算法
是乐谷7 小时前
燧原科技招大模型训练算法工程师
科技·算法
YuTaoShao7 小时前
【LeetCode 热题 100】139. 单词拆分——(解法一)记忆化搜索
java·算法·leetcode·职场和发展
圣保罗的大教堂7 小时前
leetcode 1277. 统计全为 1 的正方形子矩阵 中等
leetcode
小马学嵌入式~8 小时前
数据结构:队列 二叉树
c语言·开发语言·数据结构·算法
mit6.8248 小时前
[RestGPT] docs | RestBench评估 | 配置与环境
人工智能·python