力扣279. 完全平方数

Problem: 279. 完全平方数

文章目录

题目描述

思路及解法

1.定义一个int数组dp初始化长度为n+1;

2.状态初始化:当n等于0时,dp0为0;并且每次每次先初始化dpi = i,即表示为i时的最大所需完全平方根的个数为i个1 ;

3.状态转移:假设当前的数为i,则第一步先从i往前找到一个 在数值上最接近i的完全平方数K,K的完全平方根为j(即K = j * j)则此时数值上还剩余i - j * j ,则第二步就是去在动态转移方程中查找i - j*j所需的最小完全平方根的个数再加上刚刚找到的一个数K;综上动态转移方程为:dpi = min(dpi, dpi - j \* j) + 1

复杂度

时间复杂度:

O ( n ⋅ n ) O(n \cdot \sqrt{n}) O(n⋅n );其中 n n n为给定的数;

空间复杂度:

O ( n ) O(n) O(n)

Code

java 复制代码
class Solution {
    /**
     * Return the least number of perfect square numbers that sum to n.
     *
     * @param n Given number
     * @return int
     */
    public int numSquares(int n) {
        int[] dp = new int[n + 1];
        for (int i = 1; i <= n; ++i) {
            dp[i] = i;
            for (int j = 1; i - j * j >= 0; ++j) {
                dp[i] = Math.min(dp[i], dp[i - j * j] + 1);
            }
        }
        return dp[n];
    }
}
相关推荐
Evand J19 分钟前
【电机滤波例程1】PMSM永磁同步电机转速与位置估计,MATLAB程序:标准无迹卡尔曼滤波、模型说明与仿真验证
算法·matlab·电机·ekf·负载·卡尔曼滤波
打码的老程是远篁37 分钟前
手把手教你玩转大模型——3. Transformer 的位置编码——模型怎么知道谁在前,谁在后?
人工智能·算法
嘎嘎风38 分钟前
MiniMind 学习笔记之 06 一张图、一百行:MiniMind 的骨架
算法·源码
用户73416810354842 分钟前
只盯被动响应做状态监测?论“控制信号”在变工况故障诊断中的重要作用
算法
Ivanqhz44 分钟前
MQA、GQA、稀疏/滑动窗口注意力及混合范式
人工智能·算法·机器学习
罗湖老棍子1 小时前
荒岛野人(信息学奥赛一本通- P1637)(洛谷-P2421)
算法·数论·枚举·裴蜀定理·扩展欧几里得·扩展中国剩余定理
朝朝辞暮i1 小时前
C++ 第 40 章:ROS2 Publisher + Timer + Subscriber + Callback + Executor 完整闭环
开发语言·c++·算法·ros2
400分1 小时前
具身智能系列之从零到「机械臂会放试管」:π0.5 VLA 真机部署完全指南【第一节】
算法
小宋10211 小时前
一套服务托管多个 LoRA:适配器加载、租户隔离与热切换实战
大数据·人工智能·算法
Rosanci1 小时前
Codex 下载与本地部署实战:从安装到运行全流程指南
开发语言·前端·算法·chatgpt·codex