LEETCODE-DAY39


title: LEETCODE-DAY39

date: 2024-03-30 17:24:46
tags:

今日内容:62.不同路径、63. 不同路径 II

T1

python 复制代码
class Solution:
    def uniquePaths(self, m: int, n: int) -> int:
        dp=[[0 for _ in range(n+1)]for _ in range(m+1)]
        dp[1][1]=1
        for i in range(1,m+1):
            for j in range(1,n+1):
                dp[i][j]=dp[i-1][j]+dp[i][j-1]

        return dp[m][n]

输入

m =

3

n =

2

输出

0

预期结果

3

dp[1][1]被覆盖了

python 复制代码
class Solution:
    def uniquePaths(self, m: int, n: int) -> int:
        dp=[[0 for _ in range(n+1)]for _ in range(m+1)]
        dp[1][1]=1
        for i in range(1,m+1):
            for j in range(1,n+1):
                if i==1 and j==1:
                    continue
                dp[i][j]=dp[i-1][j]+dp[i][j-1]

        return dp[m][n]

AC

T2

python 复制代码
class Solution:
    def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:
        m=len(obstacleGrid)
        n=len(obstacleGrid[0])
        dp=[[0 for _ in range(n)]for _ in range(m)]
        for i in range(m):
            dp[i][0]=1
        for j in range(n):
            dp[0][j]=1

        for i in range(1,m):
            for j in range(1,n):
      
                dp[i][j]=dp[i-1][j]+dp[i][j-1]
        res=dp[m-1][n-1]
        for i in range(m):
            for j in range(n):
                if obstacleGrid[i][j]==1:
                    res-=dp[i][j]*dp[m-i-1][n-j-1]
                    
        return res

输入

obstacleGrid =

\[1,1\]

输出

-1

预期结果

0

python 复制代码
#同上
return max(res,0)

输入

obstacleGrid =

\[0,0,0,0\],\[0,1,0,0\],\[0,0,0,0\],\[0,0,1,0\],\[0,0,0,0\]

输出

0

预期结果

7

需要换一种思路

python 复制代码
class Solution:
    def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:
        m=len(obstacleGrid)
        n=len(obstacleGrid[0])
        dp=[[0 for _ in range(n)]for _ in range(m)]
        if obstacleGrid[0][0]==1:
            return 0
        for i in range(m):
            if obstacleGrid[i][0]==1:
                dp[i][0]=0
            else:
                dp[i][0]=1
        for j in range(n):
            if obstacleGrid[0][j]==1:
                dp[0][j]=0
            else:
                dp[0][j]=1


        for i in range(1,m):
            for j in range(1,n):
                if obstacleGrid[i][j]==1:
                    dp[i][j]==0
                else:
                   dp[i][j]=dp[i-1][j]+dp[i][j-1]
       
       
        return dp[m-1][n-1]

输入

obstacleGrid =

\[0,0\],\[1,1\],\[0,0\]

输出

1

预期结果

0

初始化有问题

第一行遇到障碍后障碍之后的列也应初始化为0

python 复制代码
class Solution:
    def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:
        m=len(obstacleGrid)
        n=len(obstacleGrid[0])
        dp=[[0 for _ in range(n)]for _ in range(m)]
        if obstacleGrid[0][0]==1:
            return 0
        for i in range(m):
            if obstacleGrid[i][0]==1:
                dp[i][0]=0
            elif i>0 and dp[i-1][0]==0:
                dp[i][0]=0
            else:
                dp[i][0]=1
        for j in range(n):
            if obstacleGrid[0][j]==1:
                dp[0][j]=0
            elif j>0 and dp[0][j-1]==0:
                dp[0][j]=0
            else:
                dp[0][j]=1


        for i in range(1,m):
            for j in range(1,n):
                if obstacleGrid[i][j]==1:
                    dp[i][j]==0
                else:
                   dp[i][j]=dp[i-1][j]+dp[i][j-1]
       
       
        return dp[m-1][n-1]

AC

python 复制代码
python 复制代码
相关推荐
我材不敲代码1 小时前
Python实现打包贪吃蛇游戏
开发语言·python·游戏
0思必得03 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
-dzk-3 小时前
【代码随想录】LC 59.螺旋矩阵 II
c++·线性代数·算法·矩阵·模拟
韩立学长4 小时前
【开题答辩实录分享】以《基于Python的大学超市仓储信息管理系统的设计与实现》为例进行选题答辩实录分享
开发语言·python
qq_192779874 小时前
高级爬虫技巧:处理JavaScript渲染(Selenium)
jvm·数据库·python
风筝在晴天搁浅4 小时前
hot100 78.子集
java·算法
Jasmine_llq4 小时前
《P4587 [FJOI2016] 神秘数》
算法·倍增思想·稀疏表(st 表)·前缀和数组(解决静态区间和查询·st表核心实现高效预处理和查询·预处理优化(提前计算所需信息·快速io提升大规模数据读写效率
超级大只老咪4 小时前
快速进制转换
笔记·算法
u0109272714 小时前
使用Plotly创建交互式图表
jvm·数据库·python
爱学习的阿磊4 小时前
Python GUI开发:Tkinter入门教程
jvm·数据库·python