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

dp11被覆盖了

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 复制代码
相关推荐
HugoStudio_SWAN1 分钟前
洛谷 P10719 \[GESP202406 五级] 黑白格——暴力美学与图像处理的最小外接矩形
c++·图像处理·人工智能·学习·程序人生·算法·目标跟踪
那年窗外下的雪.8 分钟前
AIDC 学习日志|第 20 天|多归属业务验收与哈希不均定位
学习·算法·哈希算法
一马平川的大草原18 分钟前
如何实现SVG转Mermaid图
python·svg·格式转换·mermaid
PFFstronger25 分钟前
基于 Dify 知识库 + Ollama 大模型,自动生成测试用例并导出 XMind 的完整方案
人工智能·python·测试用例·xmind
SomeBottle42 分钟前
【小记】图片托管从又拍云迁移到腾讯云 EO + COS(兼容图片处理参数)
python·计算机网络·学习笔记·对象存储·cdn·折腾
s_w.h1 小时前
【 刷题 】双指针
算法
啥都想学点的研究生1 小时前
一篇文章讲清楚:K-Means聚类算法
算法·kmeans·聚类
cts6181 小时前
FDE架构师前端选型指南
python
白狐_7982 小时前
408 数据结构|KMP做题方法:next、nextval和高频易错点
数据结构·算法
月华路2 小时前
《模型不玄学》第20章 两种评估视角
人工智能·算法·机器学习