力扣-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,要考虑每个数用完全平方数与不用完全平方数之间哪个最优,且不大于该数的完全平方数都要试一遍。

相关推荐
米尔的可达鸭1 小时前
深入操作系统 Socket 底层:套接字控制块、FD映射、阻塞IO核心完整实现
arm开发·数据结构·websocket·网络协议·算法·架构·安全架构
tachibana21 小时前
hot100 课程表(207)
java·数据结构·算法·leetcode
神仙别闹1 小时前
编写基于C++ Huffman 算法的无损压缩程序和解压程序
java·c++·算法
大鱼>2 小时前
宠物活动轨迹追踪系统:GPS/BDS+UWB+BLE多定位融合方案
人工智能·深度学习·算法·iot·宠物
闲研随记2 小时前
【文献阅读 ICML 2026】RL算法:R2VPO
论文阅读·人工智能·算法·强化学习·icml·rl算法
旖-旎2 小时前
《LeetCode 646 最长数对链 || LeetCode 1143 最长公共子序列》
c++·算法·leetcode·动态规划
Frostnova丶2 小时前
(15)LeetCode 189. 轮转数组
数据结构·算法·leetcode
Lumos1863 小时前
故障保护与鲁棒性(十七)
算法
手写码匠3 小时前
从零实现大模型推理引擎:Continuous Batching 与动态调度系统深度解析
人工智能·深度学习·算法·aigc
wabs6663 小时前
关于单调栈【力扣503.下一个更大元素II的思考】
算法·单调栈