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

LeetCode-279. 完全平方数

1、题目描述

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

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

示例 1:

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

示例 2:

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

2、代码

#include <vector>
#include <algorithm>
using namespace std;class Solution {
public:int numSquares(int n) {// dp[i]表示和为i的最少完全平方数的数量vector<int> dp(n + 1, n); // 初始化每个数最多由n个1组成dp[0] = 0; // 和为0不需要任何数for (int i = 1; i <= n; ++i) {// 尝试所有可能的完全平方数j²for (int j = 1; j * j <= i; ++j) {// 更新dp[i]为最小值dp[i] = min(dp[i], dp[i - j * j] + 1);}}return dp[n];}
};

3、解题思路

  • 初始化:我们将dp数组的大小设为n+1,并将每个元素初始化为n,这是因为最坏情况下,任何数i都可以表示为i个 1 的和(1 是最小的完全平方数)。
  • 状态转移:对于每个数i,我们检查所有可能的完全平方数j从 1 开始,直到大于i)。对于每个有效的,我们计算dp[i - j²] + 1,这表示使用一个后,剩下的和i - j²所需的最少完全平方数数量再加 1。我们取这些值中的最小值作为dp[i]的最终值。
  • 填充 dp 数组:对于每个数i(从 1 到 n),我们考虑所有可能的完全平方数(其中j² ≤ i),并通过dp[i - j²] + 1来更新dp[i]再强调一遍,因为如果使用了一个,那么剩下的和是i - j²,最少数量就是dp[i - j²]再加 1。
  • 结果:经过上述计算后,dp[n]中存储的就是和为n的最少完全平方数的数量。
http://www.dtcms.com/a/354568.html

相关文章:

  • 楼宇自控系统应需而生为现代建筑装上智能化翅膀
  • 【论文阅读】CLIP: 从自然语言监督中学习可迁移的视觉模型
  • 移动端网页调试实战,iOS WebKit Debug Proxy 的应用与替代方案
  • 《口令猜测研究进展》——论文阅读
  • springboot连接不上redis,但是redis客户端是能连接上的
  • ⸢ 贰 ⸥ ⤳ 安全架构:数字银行安全体系规划
  • iOS混淆工具实战,社交类 App 的隐私与安全防护混淆流程
  • 【C++详解】用哈希表封装实现myunordered_map和 myunordered_set
  • Redis 保证数据不丢失
  • 系统架构设计师备考第10天——网络技术-局域网以太网
  • [n8n] 全文检索(FTS)集成 | Mermaid图表生成
  • 基于django的梧桐山水智慧旅游平台设计与开发(代码+数据库+LW)
  • [p2p-Magnet] docs | HTTP API与Web界面 | 搜索查询引擎
  • OpenAI重组受阻:微软“锁链”与生态博弈
  • [p2p-Magnet] 数据模型(GORM) | DHT爬虫 | 分类器
  • 华为云OBS+HMS+EMRonEC2+HiveSparkFlink+GaussDB
  • GaussDB 修改schema属主时报:must be member of role “dtest“
  • 架构设计模式七大原则
  • 如何将iPhone上的隐藏照片传输到电脑
  • 零基础开发应用:cpolar+Appsmith平民化方案
  • AbpVnext 阿里云ssl证书多个生产环境自动更新
  • 观远BI仪表板智能洞察场景实战:如何破解门店销售、渠道转化与经营分析难题
  • 用React写一个技能冷却的案例,关于节流
  • C++《哈希表》
  • Day16_【机器学习常见术语】
  • Qt自定义聊天消息控件ChatMessage:初步实现仿微信聊天界面
  • Python 数据分析学习笔记:Pandas 逻辑运算
  • 97、23种设计模式之桥接模式(6/23)
  • 鸿蒙Harmony-从零开始构建类似于安卓GreenDao的ORM数据库(四)
  • attention is all u need