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];
    }
};
相关文章
|
1月前
代码随想录Day33 LeetCode T62不同路径 LeetCode T63 不同路径II
代码随想录Day33 LeetCode T62不同路径 LeetCode T63 不同路径II
49 0
|
1月前
leetcode-329:矩阵中的最长递增路径
leetcode-329:矩阵中的最长递增路径
29 0
|
6天前
|
存储 SQL 算法
LeetCode题目113:多种算法实现 路径总和ll
LeetCode题目113:多种算法实现 路径总和ll
|
1月前
leetcode代码记录(二叉树的所有路径
leetcode代码记录(二叉树的所有路径
16 0
|
6天前
|
存储 算法 数据可视化
LeetCode 题目 120:三角形最小路径和
LeetCode 题目 120:三角形最小路径和
|
6天前
|
存储 SQL 算法
LeetCode题目112:多种算法实现路径总与改进过程
LeetCode题目112:多种算法实现路径总与改进过程
|
6天前
|
存储 算法 Unix
掌握Unix路径简化:五种有效算法比较【python力扣71题】
掌握Unix路径简化:五种有效算法比较【python力扣71题】
|
6天前
|
存储 算法 数据挖掘
穿越障碍:最小路径和的高效算法比较【python力扣题64】
穿越障碍:最小路径和的高效算法比较【python力扣题64】
|
6天前
|
存储 算法 机器人
LeetCode 题目 62:不同路径【python】
LeetCode 题目 62:不同路径【python】
|
6天前
|
存储 算法 机器人
路径规划的艺术:不同路径 II 的算法深掘【python力扣63题】
路径规划的艺术:不同路径 II 的算法深掘【python力扣63题】