力扣——完全平方数

题目链接:

链接

题目描述:

思路:

用动态规划,设 i i i的最少数量是 d p ( i ) dp(i) dp(i),最多数量是 i i i,如1+1+...+1

则 d p ( i ) = m i n { i , d p ( i − j ∗ j ) + 1 } dp(i)=min\{ i,dp(i-j*j)+1 \} dp(i)=min{i,dp(i−j∗j)+1}

这里为什么是 d p ( i − j ∗ j ) + 1 dp(i-j*j)+1 dp(i−j∗j)+1,因为要得到 i i i减去一个平方数后的最小组成数量,那么 i i i的最小组成数量就是减去平方数后的最小组成数量+1,这个1就代表减去的这个平方数

实现代码:

java 复制代码
class Solution {
    public int numSquares(int n) {
        int[] dp = new int[n+1];
        dp[0] = 0;
        for(int i = 1; i <= n; i++){
            int minn = i;
            for(int j = 1; i - j * j >=0; j++){
                minn = Math.min(minn, dp[i - j * j] + 1);
            }
            dp[i] = minn;
        }
        return dp[n];
    }
}
相关推荐
故事和你912 分钟前
洛谷-【图论2-2】最短路1
开发语言·数据结构·c++·算法·动态规划·图论
Simple-Soft6 分钟前
指针的高级应用与技巧 - C语言的灵魂
c语言·数据结构·算法
南宫萧幕11 分钟前
Simulink 从零搭建 HEV ECMS 环境:模块解析、排坑指南与智能算法接口预留
人工智能·算法·matlab·汽车·控制
子豪-中国机器人14 分钟前
词云与条形码答案
算法
闲人编程16 分钟前
Agent的评估体系(AgentEval):如何判断一个Agent好坏?
大数据·人工智能·python·算法·agent·智能体·swe
沫璃染墨33 分钟前
红黑树完全指南:从核心原理到插入验证全实现
开发语言·c++·算法
拉拉拉拉拉拉拉马1 小时前
Windsurf 最新版进阶讲解:从 Cascade 到 Devin Local,重新理解 AI 编程工作流
人工智能·算法
Mr_pyx1 小时前
面试题记录
jvm·数据结构·算法·spring·mybatis
zzzsde1 小时前
【Linux】线程同步和互斥(1):线程互斥与加锁实现
linux·运维·服务器·开发语言·算法
努力努力再努力wz1 小时前
【C++高阶数据结构系列】:时间轮定时器详解:原理分析与代码实现,带你从零手撕时间轮!(附时间轮的实现源码)
c语言·开发语言·数据结构·c++·qt·算法·ui