当前位置: 首页 > 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.gsyq.cn/news/17208.html

相关文章:

  • 2025 最新推荐!办公桌厂商权威榜单重磅发布,涵盖老板 / 员工 / 实木 / 屏风办公桌优质之选
  • 2025 办公家具厂家最新推荐榜:实木 / 现代 / 环保 / 智能 / 定制品类精英盘点,5 大优选品牌选购指南
  • 2025机械加工厂家口碑推荐榜:技术实力与行业口碑深度解析
  • 2025通风气楼厂家推荐榜:专业通风与高效节能口碑之选
  • 储罐源头厂家最新推荐榜:技术实力与市场口碑深度解析
  • 机器学习——放回抽样 - 详解
  • 2025 年废品回收公司最新推荐排行榜权威发布,聚焦桂林废铜/废铁/废铝/电缆电线等回收领域优质公司
  • 搭建doris FE的开发环境
  • 2025 铅板源头厂家最新推荐排行榜:聚焦防辐射铅门 / 放射科防护 / 高纯度铅皮,深挖性价比与适配性
  • 2025 年国内电容厂家最新推荐排行榜:聚焦固态 / 高压 / 安规 / CBB / 超级电容多品类,精选优质厂商助力企业精准采购选型
  • ROS 2机器人操作系统与Gazebo机器人仿真
  • 完整教程:BUUCTF[ACTF2020 新生赛]Include 1题解
  • LINUX之TCP内核参数解析
  • 实用指南:基于langchain的简单RAG的实现
  • 2025双氧水厂家权威推荐榜:优质生产与稳定供应实力之选
  • 英国AI数据中心发展规划:技术挑战与产业反馈
  • 2025 年工业风机厂家最新推荐排行榜:涵盖离心高温防腐耐磨防爆等类型设备实力厂商精选高温/防腐/耐磨/防爆/除尘/不锈钢/锅炉风机厂家推荐
  • 2025 年最新推荐!种植牙医院权威榜单:聚焦连锁品牌与万级手术室,助您精准选靠谱口腔机构西宁种植牙口腔医院/西宁种植牙齿美容/西宁种植牙美容医院推荐
  • 2025 年最新推荐西安路灯厂家排行榜:市政 / LED / 智慧 / 太阳能 / 农村路灯优质企业全景指南
  • 2025 最新红绿灯厂家推荐排行榜:实力厂家技术与口碑深度解析,交通信号设备优选指南交通信号/路口红绿灯厂家推荐
  • Claude Code完整安装部署指南:支持Windows/Linux/macOS三平台详细教程
  • 2025 年淋膜机厂家最新推荐排行榜:覆盖纸张 / 无纺布 / 高速 / 全自动等多类型设备,精选优质企业助力精准选购
  • 2021年度十大前沿科技研究盘点
  • 2025 最新推荐:全国开锁公司口碑排行榜权威甄选,含智能锁专项服务与紧急上门品牌详解全国/汽车保险柜/汽车锁/保险柜/智能/快速上门开锁公司推荐
  • CSP - J 讲义内容与CSP - S 讲义内容对比
  • h5的aliplayer-min.js 加密视频会走到debugger - 教程
  • python“锈化”库替代,性能更快的库
  • docker B站学习 - 实践
  • 在AI技术唾手可得的时代,挖掘新需求成为制胜关键——某知名自动化脚本工具需求洞察
  • 白箱算力与AI元人文:一场从“求解”到“创造”的范式革命