63、不同路径II

题目

解答:

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

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

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

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

递推:对当前(i,j) 非障碍物时:dp[i][j]=dp[i-1][j]+dp[i][j-1] 有障碍物:dp[i][j]=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),也可以优化

相关推荐
Liangwei Lin18 分钟前
LeetCode 20. 有效的括号
算法
richard_yuu33 分钟前
数据结构|二叉树层序遍历 & 线索二叉树:吃透二叉树进阶核心考点
数据结构
IronMurphy35 分钟前
【算法四十四】322. 零钱兑换
算法
凯瑟琳.奥古斯特35 分钟前
力扣2760 C++滑动窗口解法
数据结构·c++·算法·leetcode·职场和发展
Hesionberger36 分钟前
LeetCode96: 不同的二叉搜索树(多解)
算法
_深海凉_37 分钟前
LeetCode热题100-不同路径
算法·leetcode·职场和发展
ZPC821042 分钟前
CPU 核心隔离 + 线程绑核 + 实时优先级 SCHED_FIFO
人工智能·算法·计算机视觉·机器人
andafaAPS1 小时前
安达发|aps自动排产排程排单软件:日化生产高效运转“数字魔法”
大数据·人工智能·算法·aps软件·安达发aps·aps自动排产排程排单软件
黎阳之光1 小时前
全域实景立体管控:数字孪生与视频孪生技术体系白皮书
大数据·人工智能·算法·安全·数字孪生
88号技师2 小时前
2026年4月一区SCI-狒狒优化算法Baboon optimization algorithm-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法