279. 完全平方数
给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。
完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。
示例 1:
输入:n = 12
输出:3
解释:12 = 4 + 4 + 4
示例 2:
输入:n = 13
输出:2
解释:13 = 4 + 9
class Solution { public: int numSquares(int n) { vector<int>dp(n+1,n); dp[0]=0; for(int i=1;i<n+1;i++) { for(int j=0;j*j<=i;j++){ dp[i]=min(dp[i],dp[i-j*j]+1); } } return dp[n]; } };
创建一个长度为 n+1 的向量 dp,其中 dp[i] 表示和为 i 的最小完全平方数个数。
首先将 dp 向量初始化为 n,因为任何正整数都可以表示为至多 n 个完全平方数之和。然后我们将 dp[0] 设为 0,因为 0 的最小完全平方数个数为 0。
接下来,遍历从 1 到 n 的所有整数。对于每个整数 i,找到所有小于或等于 i 的完全平方数 j^2,并更新 dp[i] 为 dp[i] 和 dp[i - jj] + 1 中的较小值。这是因为如果我们可以用 dp[i - jj] 个完全平方数表示 i - jj,那么我们只需要再加一个 jj(也就是dp[i-j*j]+1) 就可以表示 i。
最终,我们返回 dp[n],即和为 n 的最小完全平方数个数。
本文来自博客园,作者:东岸,转载请注明原文链接:https://www.cnblogs.com/donghao99/p/18197527
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理