代码随想录算法训练营第45天| 70. 爬楼梯 (进阶) 322. 零钱兑换 279.完全平方数

  • 今日学习的文章链接,或者视频链接

第九章 动态规划part07

  • 自己看到题目的第一想法

  • 看完代码随想录之后的想法

70(进阶)

class Solution {
public:
    int climbStairs(int n) {
        //用完全背包的思想
        vector dp(n + 1, 0);
        dp[0] = 1;
        for (int i = 0; i <= n; i++) { // 遍历背包
            for (int j = 1; j <= 2; j++) { // 遍历物品
                if (i - j >= 0 ) {
                    dp[i] += dp[i - j];
                }
            }
        }
        return dp[n];
    }
};

322

class Solution {
public:
    int coinChange(vector& coins, int amount) {
        //dp[j] 表示背包容量为j时,凑成总金额所需的 最少的硬币个数
        //dp[j] = min(dp[j],dp[j-coins[i]]+1)
        vector dp(amount+1,INT_MAX);
        dp[0] = 0;
        for(int i = 0;i

279

class Solution {
public:
    int numSquares(int n) {
        vector dp(n+1,INT_MAX);
        dp[0] = 0;
        for(int i = 1;i*i<=n;i++){
            for(int j = i*i;j<=n;j++){
                if(dp[j-i*i]!=INT_MAX)//不可能有找不到的情况,这个条件可省略{
                    dp[j] = min(dp[j],dp[j-i*i]+1);
                }
            }
        }
        return dp[n];
    }
};
  • 自己实现过程中遇到哪些困难

  • 今日收获,记录一下自己的学习时长

你可能感兴趣的:(算法,leetcode,职场和发展)