力扣-279.完全平方数

题目描述

给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。

完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。

java 复制代码
class Solution {
    public int numSquares(int n) {
        int[] nums = new int[102];
        for(int i = 1; i <= 101; i++){
            nums[i] = i*i;
        }
        int[] dp = new int[n+1];    //dp数组是最后答案,和为n最少个数
        for(int i = 1; i <= n; i++){
            dp[i] = i;  //最差的可能是全1
            for(int j = 1;i-nums[j]>=0;j++){
                dp[i] = Math.min(dp[i],dp[i-nums[j]]+1);    //轮流用不超过n的完全平方数做替换
            }
        }
        return dp[n];
    }
}

小结:还是一维的dp,要考虑每个数用完全平方数与不用完全平方数之间哪个最优,且不大于该数的完全平方数都要试一遍。

相关推荐
2401_8318249611 分钟前
代码性能剖析工具
开发语言·c++·算法
Sunshine for you1 小时前
C++中的职责链模式实战
开发语言·c++·算法
qq_416018721 小时前
C++中的状态模式
开发语言·c++·算法
2401_884563241 小时前
模板代码生成工具
开发语言·c++·算法
2401_831920742 小时前
C++代码国际化支持
开发语言·c++·算法
m0_672703312 小时前
上机练习第51天
数据结构·c++·算法
ArturiaZ2 小时前
【day60】
算法·深度优先·图论
2401_851272992 小时前
自定义内存检测工具
开发语言·c++·算法
☆5662 小时前
C++中的命令模式
开发语言·c++·算法
仰泳的熊猫2 小时前
题目2577:蓝桥杯2020年第十一届省赛真题-走方格
数据结构·c++·算法·蓝桥杯