代码随想录算法训练营第三十九天 | 不同路径、不同路径 II
● 今日学习的文章链接和视频链接
题目62.不同路径
题目63. 不同路径 II
● 看到题目的第一想法
找路径
● 看完代码随想录之后的想法
EZ
● 实现过程中遇到哪些困难
和之前机器人的实验很像,写的快
● 解题代码
-
点击查看代码
class Solution { public int uniquePaths(int m, int n) { int[][] dp = new int[m][n]; for (int i = 0; i < n; i++) { dp[0][i] = 1; } for (int i = 0; i < m; i++) { dp[i][0] = 1; } for (int i = 1; i < m; i++) { for (int j = 1; j < n; j++) { dp[i][j] = dp[i-1][j] + dp[i][j-1]; } } return dp[m - 1][n - 1]; } } -
点击查看代码
class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { int m = obstacleGrid.length; int n = obstacleGrid[0].length; int flag = 0; int[][] dp = new int[m][n]; if(obstacleGrid[m - 1][n - 1] == 1){ return 0; } for (int i = 0; i < n; i++) { if(obstacleGrid[0][i] == 1){ flag = 1; } if(flag == 0){ dp[0][i] = 1; }else{ dp[0][i] = 0; } } flag = 0; for (int i = 0; i < m; i++) { if(obstacleGrid[i][0] == 1){ flag = 1; } if(flag == 0){ dp[i][0] = 1; }else{ dp[i][0] = 0; } } flag = 0; for (int i = 1; i < m; i++) { for (int j = 1; j < n; j++) { if(obstacleGrid[i-1][j] == 1 && obstacleGrid[i][j-1] == 1){ dp[i][j] = 0; } if(obstacleGrid[i-1][j] == 1 && obstacleGrid[i][j-1] == 0){ dp[i][j] = dp[i][j-1]; } if(obstacleGrid[i-1][j] == 0 && obstacleGrid[i][j-1] == 1){ dp[i][j] = dp[i-1][j]; } if(obstacleGrid[i-1][j] == 0 && obstacleGrid[i][j-1] == 0){ dp[i][j] = dp[i-1][j] + dp[i][j-1]; } } } return dp[m - 1][n - 1]; } }
● 今日收获,学习时长
今日收获:学习了DP找路径
学习时长:1h
浙公网安备 33010602011771号