力扣279. 完全平方数

Problem: 279. 完全平方数

文章目录

题目描述

思路及解法

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

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

3.状态转移:假设当前的数为i,则第一步先从i往前找到一个 在数值上最接近i的完全平方数K,K的完全平方根为j(即K = j * j)则此时数值上还剩余i - j * j ,则第二步就是去在动态转移方程中查找i - j*j所需的最小完全平方根的个数再加上刚刚找到的一个数K;综上动态转移方程为:dp[i] = min(dp[i], dp[i - 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];
    }
}
相关推荐
PXM的算法星球4 小时前
【leetcode】3524 求出数组的X值1
算法·leetcode·职场和发展
椰羊~王小美7 小时前
LeetCode -- Flora -- edit 2025-04-27
算法·leetcode·职场和发展
缘友一世8 小时前
从线性回归到逻辑回归
算法·逻辑回归·线性回归
前端_学习之路8 小时前
javaScript--数据结构和算法
javascript·数据结构·算法
weixin_428498499 小时前
使用HYPRE库并行装配IJ稀疏矩阵指南: 矩阵预分配和重复利用
算法·矩阵
雾削木11 小时前
mAh 与 Wh:电量单位的深度解析
开发语言·c++·单片机·嵌入式硬件·算法·电脑
__lost11 小时前
小球在摆线上下落的物理过程MATLAB代码
开发语言·算法·matlab
mit6.82412 小时前
[Lc_week] 447 | 155 | Q1 | hash | pair {}调用
算法·leetcode·哈希算法·散列表
jerry60914 小时前
优先队列、堆笔记(算法第四版)
java·笔记·算法
勤劳的牛马14 小时前
📚 小白学算法 | 每日一题 | 算法实战:加1!
算法