63、不同路径II

题目

解答:

初始化和特殊情况比较麻烦的dp

obstacleGrid(0,0)=1的,直接return 0即可。入口都被堵住了还怎么走。

m=n=1情况,直接判断

第一行初始化:dp10->dpi0 碰到有障碍物的,从当前格子开始到末尾全部置0,可以用flag实现,也可以用逻辑与和非实现。列同理

递推:对当前(i,j) 非障碍物时:dpij=dpi-1j+dpij-1 有障碍物:dpij=0 也可以用逻辑去实现

cpp 复制代码
class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        if(obstacleGrid[0][0]) return 0;
        int m = obstacleGrid.size();
        int n = obstacleGrid[0].size();
        vector<vector<int>> dp(m,vector<int>(n));
        dp[0][0]=1;

        if(m==1&&n==1) 
            return 1;

        //初始化第一列
        bool flagm=false;
        for(int i=1;i<m;i++){
            if(obstacleGrid[i][0]||flagm){
                flagm=true;
                dp[i][0]=0;
            }
            else {
                dp[i][0]=1;
            }
        }

        //初始化第一行
        bool flagn=false;
        for(int i=1;i<n;i++){
            if(obstacleGrid[0][i]||flagn){
                flagn = true;
                dp[0][i]=0;
            }
            else{
                dp[0][i]=1;
            }
        }

        for(int i=1;i<m;i++){
            for(int j=1;j<n;j++){
                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];
    }
};

时间复杂度O(mn)

空间复杂度O(mn),也可以优化

相关推荐
罗湖老棍子3 小时前
【例 1】Sightseeing Trip(信息学奥赛一本通- P1494)(洛谷-P10927)
数据结构·算法·图论·最短路·floyd·最小环
stsdddd5 小时前
YOLO算法建筑工地安全帽目标检测数据集16881张:标注核对笔记
算法·yolo·目标检测
CV爱数码6 小时前
论文精读|Learned Primal-Dual:把原始–对偶算法展开成网络
图像处理·算法·计算机视觉·ct·重建·断层扫描
yuniko-n6 小时前
【算法】约瑟夫环问题
java·算法
郝亚军6 小时前
manifest 中 `sha256` 与 `signValue` 的作用
java·开发语言·数据结构
l1t7 小时前
测试DuckDB v2.1.0-alpha49002的bignum乘法
数据库·sql·算法·duckdb
Nil2087 小时前
LeetCode 283移动零
数据结构·算法·leetcode
CQU_JIAKE7 小时前
10.18【A】
算法
LMT流氓兔7 小时前
第五单元——第4课:给工具参数加校验
java·前端·算法·ai·langchain
物联网软硬件开发-轨物科技8 小时前
【轨物方案】深度解读开关柜智能感知及一键顺控专家系统
大数据·运维·网络·人工智能·算法·机器人