leetcode 279 完全平方数

简介: leetcode 279 完全平方数

完全平方数


bba976fd7d66411a9a06cb3437980e5b.png

动态规划

和322零钱兑换完全一致

自己构建完全平方数组,作为价格数组

找到刚好装满背包,但使用金币数量最少的金币数

class Solution {
public:
    int numSquares(int n) {
        vector<int> sqrt_num;
        vector<int> dp(n+1,INT_MAX);
        int tmp = 1;
        while( pow(tmp,2) <= n )
        {
            sqrt_num.push_back(pow(tmp,2));
            tmp++;
        }
        dp[0]=0;
        for(int i=0 ;i<sqrt_num.size();i++)
        {
            for(int j=sqrt_num[i] ; j<=n ;j++)
                dp[j] = min(dp[j] , dp[j-sqrt_num[i]]+1 );
        }
        return dp[n];
    }
};

二刷

class Solution {
public:
    int numSquares(int n) {
        vector<int> dp(n+1,INT_MAX);
        vector<int> nums;
        for(int i=1 ; (i*i)<=n ; i++)
        {
            nums.push_back(i*i);
        }
        dp[0] = 0;
        for(int i=0 ; i<nums.size() ; i++)
        {
            for(int j=nums[i] ; j<=n ;j++)
            {
                if(dp[j-nums[i]] != INT_MAX)
                    dp[j] = min(dp[j] , dp[j-nums[i]]+1 );
            }
        }
        return dp[n];
    }
};
相关文章
|
6月前
|
Go
golang力扣leetcode 279.完全平方数
golang力扣leetcode 279.完全平方数
48 0
|
6月前
|
Java
leetcode-279:完全平方数
leetcode-279:完全平方数
57 0
【Leetcode -367.有效的完全平方数 -374.猜数字大小】
【Leetcode -367.有效的完全平方数 -374.猜数字大小】
44 0
|
3月前
|
Python
【Leetcode刷题Python】279. 完全平方数
LeetCode 279题 "完全平方数" 的Python解决方案,使用动态规划来找到和为给定整数n的完全平方数的最少数量。
31 0
|
3月前
|
Python
【Leetcode刷题Python】367. 有效的完全平方数
本文提供了两种判断一个正整数是否为完全平方数的Python实现方法:一种是利用数学公式逐个减去奇数的方法,另一种是使用二分查找优化的暴力求解方法。
62 0
【超直白】leetcode 279 完全平方数
【超直白】leetcode 279 完全平方数
|
5月前
|
算法
【经典LeetCode算法题目专栏分类】【第6期】二分查找系列:x的平方根、有效完全平方数、搜索二位矩阵、寻找旋转排序数组最小值
【经典LeetCode算法题目专栏分类】【第6期】二分查找系列:x的平方根、有效完全平方数、搜索二位矩阵、寻找旋转排序数组最小值
|
6月前
[leetcode ~dp ]279. 完全平方数
[leetcode ~dp ]279. 完全平方数
|
6月前
代码随想录 Day38 完全背包问题 LeetCode T70 爬楼梯 T322 零钱兑换 T279 完全平方数
代码随想录 Day38 完全背包问题 LeetCode T70 爬楼梯 T322 零钱兑换 T279 完全平方数
36 0
|
6月前
leetcode279完全平方数刷题打卡
leetcode279完全平方数刷题打卡
38 0