leetcode 63 不同路径II

简介: leetcode 63 不同路径II

不同路径II


a380f09d74e14098a27cbb985e4d88ca.pngf6da9fd494e042b5b9434b21591e2154.png


动态规划

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        vector<vector<int>> 
        dp(obstacleGrid.size() , vector<int>(obstacleGrid[0].size() , 0));
        for(int i=0 ; i<obstacleGrid.size() ; i++)
        {
            for(int j=0 ; j<obstacleGrid[0].size() ;j++)
            {
                if(obstacleGrid[i][j] == 1) continue; //遇到障碍物绕开
                if(i==0 && j==0) dp[0][0] = 1; //起始点
                else if(i==0) dp[i][j] =  dp[i][j-1]; //最边行
                else if(j==0) dp[i][j] =  dp[i-1][j]; //最边列
                else dp[i][j] = dp[i-1][j] + dp[i][j-1]; 
            }
        }
        return dp[obstacleGrid.size()-1][obstacleGrid[0].size()-1];
    }
};

二刷

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        int m = obstacleGrid.size();
        int n = obstacleGrid[0].size();
        vector<vector<int>> dp(m , vector<int>(n,0));
        for(int i=0 ; i<m ; i++ )
        {
            if(obstacleGrid[i][0] == 0)
                dp[i][0] = 1;
            else break;
        }
         for(int i=0 ; i<n ; i++ )
        {
            if(obstacleGrid[0][i] == 0)
                dp[0][i] = 1;
            else break;
        }
        for(int i=1 ; i<m ; i++)
        {
            for(int j=1 ; j<n ; j++)
            {
                if(obstacleGrid[i][j] == 0)
                    dp[i][j] = dp[i-1][j] + dp[i][j-1]; 
            }
        }
        return dp[m-1][n-1];
    }
};
相关文章
|
3月前
【LeetCode 35】112.路径总和
【LeetCode 35】112.路径总和
33 0
|
6月前
|
算法 Unix 测试技术
力扣经典150题第五十二题:简化路径
力扣经典150题第五十二题:简化路径
53 0
|
3月前
【LeetCode 36】113.路径总和II
【LeetCode 36】113.路径总和II
35 0
|
5月前
|
机器人 Python
【Leetcode刷题Python】62. 不同路径
LeetCode 62题 "不同路径" 的Python解决方案,使用动态规划算法计算机器人从网格左上角到右下角的所有可能路径数量。
78 0
|
7月前
|
存储 SQL 算法
LeetCode题目113:多种算法实现 路径总和ll
LeetCode题目113:多种算法实现 路径总和ll
|
3月前
【LeetCode 34】257.二叉树的所有路径
【LeetCode 34】257.二叉树的所有路径
27 0
|
5月前
|
Python
【Leetcode刷题Python】113. 路径总和 II
LeetCode上113号问题"路径总和 II"的Python实现,通过深度优先搜索来找出所有从根节点到叶子节点路径总和等于给定目标和的路径。
44 3
【Leetcode刷题Python】113. 路径总和 II
|
5月前
|
存储 Python
【Leetcode刷题Python】64. 最小路径和
一种使用动态规划解决LeetCode上64题“最小路径和”的Python实现方法,通过维护一个一维数组来计算从网格左上角到右下角的最小路径总和。
35 1
【Leetcode刷题Python】64. 最小路径和
|
5月前
|
存储 算法 Linux
LeetCode第71题简化路径
文章讲述了LeetCode第71题"简化路径"的解题方法,利用栈的数据结构特性来处理路径中的"."和"..",实现路径的简化。
LeetCode第71题简化路径
|
5月前
|
算法
LeetCode第64题最小路径和
LeetCode第64题"最小路径和"的解题方法,运用动态规划思想,通过构建一个dp数组来记录到达每个点的最小路径和,从而高效求解。
LeetCode第64题最小路径和