Leetcode 63. Unique Paths II | | Leetcode 63. Unique Paths II 文章作者:Tyan博客:noahsnail.com | CSDN | 简书 1. Description 2. Solution Version 1 123456789101112131415161718192021222324252627class Solution {public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int m = obstacleGrid.size(); int n = obstacleGrid[0].size(); vector<vector<int>> path(m, vector<int>(n)); path[0][0] = 1; for(int i = 0; i < m; i++) { for(int j = 0; j < n; j++) { if(obstacleGrid[i][j]) { path[i][j] = 0; continue; } if(i > 0 && j > 0) { path[i][j] = path[i - 1][j] + path[i][j - 1]; } else if(i < 1 && j > 0) { path[i][j] = path[i][j - 1]; } else if(i > 0 && j < 1) { path[i][j] = path[i - 1][j]; } } } return path[m - 1][n - 1]; }}; Version 2 12345678910111213141516171819202122232425262728293031323334class Solution {public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int m = obstacleGrid.size(); int n = obstacleGrid[0].size(); if(!obstacleGrid[0][0]) { obstacleGrid[0][0] = 1; } else { obstacleGrid[0][0] = 0; } for(int i = 0; i < m; i++) { for(int j = 0; j < n; j++) { if(i == 0 && j == 0) { continue; } if(obstacleGrid[i][j]) { obstacleGrid[i][j] = 0; continue; } if(i > 0 && j > 0) { obstacleGrid[i][j] = obstacleGrid[i - 1][j] + obstacleGrid[i][j - 1]; } else if(i < 1 && j > 0) { obstacleGrid[i][j] = obstacleGrid[i][j - 1]; } else if(i > 0 && j < 1) { obstacleGrid[i][j] = obstacleGrid[i - 1][j]; } } } return obstacleGrid[m - 1][n - 1]; }}; Reference https://leetcode.com/problems/unique-paths-ii/description/ 如果有收获,可以请我喝杯咖啡! 赏 微信打赏 支付宝打赏