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

完整教程:LeetCode Hot100刷题——完全平方数

279. 完全平方数

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

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

示例 1:

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

示例 2:

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

提示:

  • 1 <= n <= 10^4

思路分析

本题要求将整数 n 分解为若干个完全平方数的和,并返回所需完全平方数的最少数量。这是一个经典的动态规划问题,可以类比为完全背包问题。

动态规划步骤

  1. 状态定义:定义 dp[i] 表示和为 i 时所需的最少完全平方数数量。
  2. 初始化:
    1. dp[0] = 0(和为0时不需要任何平方数)。
    2. 其他位置初始化为一个较大的值(如 n + 1),因为最多由 n 个1组成。(因为要求最小值,所以初始化为一个大于可能最大值的数,比如n+1,因为最多就是n个1相加)。
  3. 状态转移:
    1. 对于每个 i(从1到n),遍历所有可能的平方数 j * j(其中 j * j <= i)。
    2. 状态转移方程:dp[i] = min(dp[i], dp[i - j * j] + 1)。
  4. 最终结果:dp[n]即为答案。

优化


完整代码

class Solution {    public int numSquares(int n) {        // 创建dp数组,dp[i]表示和为i所需的最少完全平方数的个数        int[] dp = new int[n + 1];         // 初始化dp数组,初始值设为n+1(一个大于最大可能值的数)        for(int i = 0; i <= n; i++){            dp[i] = n + 1;      // 初始化为最大值        }        dp[0] = 0;         // 动态规划填表        for(int i = 1; i <= n; i++){            // 遍历所有平方数 j*j(j从1开始,直到 j*j<=i)            for(int j = 1; j * j <= i; j++){                dp[i] = Math.min(dp[i], dp[i - j * j] + 1);            }        }        // 返回结果        return dp[n];    }}

代码解析

  1. 初始化

    • dp[0] = 0 表示和为 0 时不需要任何平方数。

    • 其他 dp[i] 初始化为 n + 1(因为最多需要 n 个 1,所以 n + 1 是一个安全的上界)。

  2. 动态规划填表

    • 外层循环遍历 i 从 1 到 n,计算每个 i 所需的最少平方数。

    • 内层循环遍历所有可能的平方数 j * jj 从 1 开始,直到 j * j > i 停止)。

    • 对于每个 j,尝试使用平方数 j * j,更新 dp[i] 为 dp[i - j * j] + 1 的最小值。

  3. 返回结果

    • 最终 dp[n] 存储了和为 n 所需的最少完全平方数数量。

示例验证

http://www.jsqmd.com/news/10013/

相关文章:

  • 2025 最新推荐!办公桌厂商权威榜单重磅发布,涵盖老板 / 员工 / 实木 / 屏风办公桌优质之选
  • 2025 办公家具厂家最新推荐榜:实木 / 现代 / 环保 / 智能 / 定制品类精英盘点,5 大优选品牌选购指南
  • 2025机械加工厂家口碑推荐榜:技术实力与行业口碑深度解析
  • 2025通风气楼厂家推荐榜:专业通风与高效节能口碑之选
  • 储罐源头厂家最新推荐榜:技术实力与市场口碑深度解析
  • 2025喷砂设备厂家TOP5推荐:技术实力与行业口碑权威解析
  • 2025电源适配器最新推荐榜:高效稳定与安全性能兼备的优质之
  • 机器学习——放回抽样 - 详解
  • 2025 年废品回收公司最新推荐排行榜权威发布,聚焦桂林废铜/废铁/废铝/电缆电线等回收领域优质公司
  • 搭建doris FE的开发环境
  • 洛谷9695 [GDCPC 2023] Traveling in Cells 题解(线段树+二分)
  • Axure 下拉框联动 - 实践
  • 2025 年震动盘厂家最新推荐榜单:覆盖精密震动盘 / 电子震动盘 / 塑料震动盘等品类,为企业高效选型提供权威参考
  • 题解:qoj6170 凸多边形正则划分问题
  • web安全开发,在线%机器学习异常流量检测系统%开发demo - 详解
  • 2025 铅板源头厂家最新推荐排行榜:聚焦防辐射铅门 / 放射科防护 / 高纯度铅皮,深挖性价比与适配性
  • 2025 年国内电容厂家最新推荐排行榜:聚焦固态 / 高压 / 安规 / CBB / 超级电容多品类,精选优质厂商助力企业精准采购选型
  • 2025 年 MOS 管厂家最新推荐排行榜权威发布,覆盖高压 / 低压 / 大功率 / N 型等类型,助力企业高效采购精准选型
  • Chrome浏览器插件开发
  • 2025 年最新波形护栏厂家推荐排行榜:聚焦国内优质厂商技术优势与服务能力,助力采购方精准选型 三波/二波/双波/喷塑/公路/热浸锌/浸塑波形护栏厂家推荐
  • linux 中paste命令实现按照指定列数输出文件
  • Transformer原理解析及中文项目实践(微课视频版)
  • 2025 年章丘二手磁选机服务公司最新推荐榜单:含回收置换 / 全型号设备及优质售后企业权威排行
  • Navicat配置MySQL自动备份
  • ROS 2机器人操作系统与Gazebo机器人仿真
  • 2025 年次氯酸钠发生器厂家最新推荐榜:覆盖电解法 / 食盐电解等类型,聚焦专利技术与成本优势的品牌深度解析水厂/大型/小型/食盐电解产生次氯酸钠发生器厂家推荐
  • 2025 年最新铝镁锰板厂商口碑排行榜:实力厂家推荐及 100 万㎡工程案例与 20 年质保深度解读铝镁锰板屋面板/保温板/卷/墙面板 铝镁锰板金属屋面板
  • 2025 年二氧化氯发生器厂家最新推荐排行榜:电解式设备厂家综合实力测评及优质企业选购指南电解/电解法/电解食盐/电解盐二氧化氯发生器厂家推荐
  • 2025 年国内铝板厂家最新推荐排行榜:1-7 系主流铝板企业实力测评及优选指南1060/1100/3003/3004/5052/5083/6061/6063/6082铝板厂家推荐
  • Fedora 38 安装 perl-JSON RPM 包步骤(含依赖问题解决及附安装包)​