代码随想录算法训练营第四十五天 | 322. 零钱兑换、279. 完全平方数

69 阅读1分钟

代码随想录算法训练营第四十五天 | 322. 零钱兑换、279. 完全平方数

322. 零钱兑换

题目链接:322. 零钱兑换

  • 递推公式!: dp[j] = Math.min(dp[j], dp[j-coins[i]])
  • 初始化最大值
  • 遍历顺序无所谓

279. 完全平方数

题目链接:279. 完全平方数

  • 和上题类似
  •  class Solution {
     public:
         int numSquares(int n) {
             // 和为i的平方数的最小数量是 dp[i]
             vector<int> dp(n + 1);
             dp[0] = 0;
     ​
             for (int i = 1; i <= n; i++) {
                 dp[i] = INT_MAX; // 最坏的情况
                 for (int j = 1; j * j <= i; j++) {
                     dp[i] = min(dp[i], dp[i - j * j] + 1);
                 }
             }
             return dp[n];
         }
     };