国外有哪些设计网站,专做logo网站叫什么地方,中疾控发布全国新冠感染情况,微信网页开发教程本质上感觉是一个相加的问题#xff0c;状态的转换#xff0c;由前一种状态推至下一种状态509. 斐波那契数
较为简单
746. 使用最小花费爬楼梯 62. 不同路径
一开始写的时候被吓到了#xff0c;但是发现听完一半之后再写还是比较容易的 对于我而言主要是找到逻辑#xf…
本质上感觉是一个相加的问题状态的转换由前一种状态推至下一种状态509. 斐波那契数
较为简单
746. 使用最小花费爬楼梯 62. 不同路径
一开始写的时候被吓到了但是发现听完一半之后再写还是比较容易的 对于我而言主要是找到逻辑
class Solution {public int uniquePaths(int m, int n) {if (m 1 || n 1){return 1;}int[][] result new int[m][n];result[0][0] 0;result[1][0] 1;result[0][1] 1;for (int i 0;i m;i){for (int j 0;j n; j){if (i 0 j 0){result[i][j] result[i][j-1] result[i-1][j];}else if (i 0 j 0 j!1){result[i][j] result[i][j-1];}else if (j 0 i 0 i!1){result[i][j] result[i-1][j];}}}return result[m-1][n-1];
}
}
63. 不同路径 II
秒杀和前者逻辑差不多要注意初始化就好 class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m obstacleGrid.length;int n obstacleGrid[0].length;if (m 1 || n 1){for (int i 0;i m; i){for (int j 0;j n; j){if (obstacleGrid[i][j] 1){return 0;}}}return 1;}int[][] result new int[m][n];if (obstacleGrid[0][0] 1){return 0;}else{result[0][0] 0;}if (obstacleGrid[1][0] 1){result[1][0] 0;}else{result[1][0] 1;}if (obstacleGrid[0][1] 1){result[0][1] 0;}else{result[0][1] 1;}for (int i 0;i m;i){for (int j 0;j n; j){if (obstacleGrid[i][j] 1){result[i][j] 0;}else if (i 0 j 0){result[i][j] result[i][j-1] result[i-1][j];}else if (i 0 j 0 j!1){result[i][j] result[i][j-1];}else if (j 0 i 0 i!1){result[i][j] result[i-1][j];}}}return result[m-1][n-1];
}
} 别人的写法比较nb
class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m obstacleGrid.length;int n obstacleGrid[0].length;int[][] dp new int[m][n];//如果在起点或终点出现了障碍直接返回0if (obstacleGrid[m - 1][n - 1] 1 || obstacleGrid[0][0] 1) {return 0;}for (int i 0; i m obstacleGrid[i][0] 0; i) {dp[i][0] 1;}for (int j 0; j n obstacleGrid[0][j] 0; j) {dp[0][j] 1;}for (int i 1; i m; i) {for (int j 1; j n; j) {dp[i][j] (obstacleGrid[i][j] 0) ? dp[i - 1][j] dp[i][j - 1] : 0;}}return dp[m - 1][n - 1];}
} 343. 整数拆分
再写吧。。累了 96. 不同的二叉搜索树
416. 分割等和子集
背包问题 - 我真心实意的感觉这个像玄学
明明其实不太明白呢但神不知鬼不觉的就写出来了我的天
为什么要求max呢我真的不理解 class Solution {public boolean canPartition(int[] nums) {int sum 0;for (int i 0;i nums.length;i){sum nums[i];}if (sum % 2 ! 0){return false;}else{sum sum/2;}int dp[][] new int[nums.length][sum 1];for (int j 0;j sum 1;j){if (j nums[0]){dp[0][j] nums[0];}}for (int i 1;i nums.length;i){for (int j 1;j sum 1;j){if (j nums[i]) dp[i][j] dp[i - 1][j];else dp[i][j] Math.max(dp[i - 1][j], dp[i - 1][j - nums[i]] nums[i]); }}if(dp[nums.length - 1][sum] sum){return true;}else{return false;}}
}