平板网站开发环境,高清免费观看电视网站,福州建设厅网站,如何设计中文网站代码随想录训练营第45天|70. 爬楼梯 #xff08;进阶#xff0c;322. 零钱兑换#xff0c;279.完全平方数 70.爬楼梯文章思路代码 322.零钱兑换文章思路代码 279.完全平方数文章思路代码 总结 70.爬楼梯
文章
代码随想录|0070.爬楼梯完全背包版本
思路
将楼梯长度视为背… 代码随想录训练营第45天|70. 爬楼梯 进阶322. 零钱兑换279.完全平方数 70.爬楼梯文章思路代码 322.零钱兑换文章思路代码 279.完全平方数文章思路代码 总结 70.爬楼梯
文章
代码随想录|0070.爬楼梯完全背包版本
思路
将楼梯长度视为背包容量将一步的跨度视为物品价值则可以转化为完全背包问题
代码
class Solution {public int climbStairs(int n) {int i, j;int[] dp new int[n 1];dp[0] 1;for (j 0; j n 1; j) {for (i 0; i 2; i) {if (j i 1) {dp[j] dp[j - i - 1];}}}return dp[n];}
}322.零钱兑换
文章
代码随想录|0322.零钱兑换
思路
dp数组初始化全为正无穷 dp[0]单独设为0 外层遍历物品内层遍历背包容积 d p [ j ] M i n ( d p [ j ] , d p [ j − c o i n s [ i ] ] 1 ) dp[j]Min(dp[j], dp[j-coins[i]]1) dp[j]Min(dp[j],dp[j−coins[i]]1)
代码
public class Solution {public int coinChange(int[] coins, int amount) {int max amount 1;int[] dp new int[amount 1];Arrays.fill(dp, max);dp[0] 0;for (int i 1; i amount; i) {for (int j 0; j coins.length; j) {if (coins[j] i) {dp[i] Math.min(dp[i], dp[i - coins[j]] 1);}}}return dp[amount] amount ? -1 : dp[amount];}
}279.完全平方数
文章
代码随想录|0279.完全平方数
思路
n为背包容量i^2为物品价值单个物品最大价值为sqrt(n) d p [ j ] M i n ( d p [ j ] , d p [ j − i 2 ] 1 ) dp[j]Min(dp[j],dp[j-i^2]1) dp[j]Min(dp[j],dp[j−i2]1)
代码
class Solution {public int numSquares(int n) {int i, j;int[] dp new int[n 1];Arrays.fill(dp, n);dp[0] 0;int upper (int) Math.sqrt(n);for (i 1; i upper; i) {for (j 1; j n 1; j) {if (j i * i) {dp[j] Math.min(dp[j], dp[j - i * i] 1);}}}return dp[n];}
}总结
二刷还是会出错 牢牢记住求组合数外层物品内层背包