当前位置: 首页 > news >正文

279. 完全平方数

题目

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

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

示例 1:

输入:n = 12
输出:3 
解释:12 = 4 + 4 + 4

示例 2:

输入:n = 13
输出:2
解释:13 = 4 + 9

提示:

  • 1 <= n <= 104

思路

这道题利用动态规划的思想,把和为n的完全平方数的最少数量问题拆解为子问题进行求解。通过定义数组,其中dp[i]表示组成数字i所需的最少完全平方数数量,利用前面的数的最少数量的结果递推得到更大问题的解。对于每个数字i,枚举所有可能的完全平方数j²<=i,通过dp[i]=m+1,找到组成i的最优解。+1表示在组成i - j²的最优解基础上再添加一个完全平方数j²。从i = 1开始,按顺序计算到i = n,确保前面最小数量解在使用前已被计算,最终dp[n]为结果。

代码

class Solution {
public:int numSquares(int n) {vector<int> dp(n+1);//用来统计从1到n每个数的和为自身的完全平方数的最少数量int m;//找最小数量for(int i=1;i<=n;i++){m=INT_MAX;//初始化为无穷大for(int j=1;j*j<=i;j++){m=min(m,dp[i-j*j]);//dp[i]可由dp[i-j²]转移而来}dp[i]=m+1;//因为又是一个新的数,在前面dp[i]的基础上+1}return dp[n];}
};

http://www.lqws.cn/news/535015.html

相关文章:

  • 2025 Java开发生态全景图:云原生、AI与性能优化的技术融合
  • 用 Spark 优化亿级用户画像计算:Delta Lake 增量更新策略详解
  • flutter结合ai工具(其他语言通用)
  • 【CMake基础入门教程】第六课:构建静态库 / 动态库 与安装规则(install)
  • Linux命令:内置命令与外部命令的本质区别
  • MongoDB
  • jupyter notebook Kernel Restarting内核崩溃的解决
  • Linux命令与脚本:高效系统管理的双刃剑
  • 用户中心配置(资源、角色、用户配置)
  • 机器学习在智能农业中的创新应用与未来趋势
  • 【javascript】this关键字
  • vue + vue-router写登陆验证的同步方法和异步方法,及页面组件的分离和后端代码
  • Unity Netcode自定义数据传输——结构体及其序列化
  • .NET测试工具Parasoft dotTEST内置安全标准,编码合规更高效
  • 基于STM32的智能书房系统的设计
  • SpringBoot定时任务 - Timer实现方式
  • 算法打卡 day4
  • 大数据赋能智慧城市:从数据洪流到科学规划的“智慧之匙”
  • Leetcode百题斩-DP
  • 全面学习 OpenAI API:从 Python 教程到 API Key 使用详解,快速上手调用和部署
  • 微服务分布式事务解决方案
  • Beam2.61.0版本消费kafka重复问题排查
  • Git 使用规范与命令使用场景详解
  • 【Excel数据分析】花垣县事业单位出成绩了,用Excel自带的M语言做一个数据分析
  • 45. 跳跃游戏 II
  • uniapp 和原生插件交互
  • Sentinel 授权规则详解与自定义异常处理
  • Tailwind CSS 尺寸控制
  • c++多线程编程
  • 《聊一聊ZXDoc》之汽车标定、台架标定、三高标定