news 2025/12/17 7:24:20

力扣 完全平方数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣 完全平方数

一、题目回顾

给定一个正整数n,要求找到最少数量的完全平方数(如 1, 4, 9, 16, …),使它们的和等于n

示例

  • n = 12 → 4 + 4 + 4 → 3

  • n = 13 → 4 + 9 → 2

本质问题一句话总结:

把 n 拆成若干个完全平方数之和,要求个数最少


二、第一反应:这是一个“最少”问题

一看到「最少多少个」,而且允许重复使用数字,很容易联想到:

  • 背包问题

  • 动态规划

  • 状态转移

而这里的“物品”就是所有 ≤ n 的完全平方数。


三、状态设计(这是题目的核心)

1️⃣ 状态定义

设:

dp[i]表示组成数字 i 所需要的最少完全平方数个数

目标就是求dp[n]


2️⃣ 状态初始化

  • dp[0] = 0
    组成 0 不需要任何数(很重要的边界)

  • 其他dp[i]初始可以设成一个很大的值(表示“还没算出来”)


四、关键一步:状态转移怎么来?

思考方式(非常重要)

假设我们要算dp[i]

  • 如果最后一步用了一个平方数

  • 那么在此之前,已经凑出了i - k²

  • 所以:

dp[i] = dp[i - k^2] + 1

但问题是:

k 可以取多少?


只枚举到 √i(平方根技巧)

因为:

  • k² ≤ i

  • 所以 k ≤ √i

这一步非常关键,它直接决定了复杂度。

于是有:

dp[i] = min (dp[i - k^2] + 1)

class Solution { public: int numSquares(int n) { int dp[10001]; for (int i=1;i<=n;i++) { int num=(int)std::sqrt(i); int min=100000; for(int j=1;j<=num;j++) { if (dp[i-j*j]+1<min) min=dp[i-j*j]+1; } dp[i]=min; } return dp[n]; } };

五、算法流程总结(口语版)

  1. 从 1 一路算到 n

  2. 对于每个 i:

    • 枚举所有k² ≤ i

    • 尝试用作为最后一个数

    • 更新最小值

  3. 最终返回dp[n]

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/14 16:43:16

JVM 之 内存溢出实战【OOM? SOF? 哪些区域会溢出?堆、虚拟机栈、元空间、直接内存溢出时各自的特点?以及什么情况会导致他们溢出?并模拟溢出】

实战&#xff1a;OutOfMemoryError异常 除了程序计数器外&#xff0c;堆、虚拟机栈、元空间、直接内存都有发生OOM的可能 下面我们演示下引起各区域OOM的情况&#xff0c;及观察下其异常表现&#xff0c;进而初步总结各异常时的调优策略 JVM调优实例&#xff1a; 堆&#xff1a…

作者头像 李华
网站建设 2025/12/14 16:40:42

磁链观测器实战:从仿真到代码的闭环之旅

磁链观测器(仿真&#xff0b;闭环代码参考文档&#xff09; 1.仿真采用simulink搭建&#xff0c;2018b版本 2.代码采用Keil软件编译&#xff0c;思路参考vesc中使用的方法&#xff0c;自己编写的代码能够实现0速闭环启动&#xff0c;并且标注有大量注释&#xff0c;方便学习。 …

作者头像 李华
网站建设 2025/12/14 16:40:31

基于TMS320F28335芯片的BUCK双闭环PI DSP代码

基于TMS320F28335芯片的BUCK双闭环&#xff08;PI&#xff09;DSP代码搞电力电子的老司机们对BUCK电路都不陌生&#xff0c;但要把双闭环PI控制塞进DSP里跑起来&#xff0c;这事儿还真得跟TMS320F28335的寄存器大战三百回合。今天咱们就扒开这个芯片的"内脏"&#xf…

作者头像 李华
网站建设 2025/12/14 16:39:56

vue基于spring的线上文印店打印店平台设计与实现_61624t38

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2025/12/14 16:37:49

沉浸式LED显示屏LED电子屏多少钱

沉浸式LED显示屏&#xff1a;价格与选择指南 在当今的数字时代&#xff0c;沉浸式LED显示屏已成为许多行业提升用户体验和视觉效果的重要工具。无论是商业展示、娱乐活动还是教育领域&#xff0c;高质量的沉浸式LED显示屏都能带来非凡的视觉享受。然而&#xff0c;对于初次接触…

作者头像 李华
网站建设 2025/12/14 16:35:17

质量管理QMS软件系统:全模块构建卓越质量生态,数据驱动价值升级——全星质量管理QMS软件系统应用解析

质量管理软件系统&#xff1a;全模块构建卓越质量生态&#xff0c;数据驱动价值升级——全星质量管理QMS软件系统应用解析 在质量制胜的时代&#xff0c;企业需要的是一套真正懂质量管理、能创造价值的QMS系统。全星质量管理QMS软件系统&#xff0c;其核心功能模块构建起覆盖产…

作者头像 李华