力扣——完全平方数

题目链接:

链接

题目描述:

思路:

用动态规划,设 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];
    }
}
相关推荐
2401_831920746 分钟前
C++代码国际化支持
开发语言·c++·算法
m0_6727033113 分钟前
上机练习第51天
数据结构·c++·算法
ArturiaZ21 分钟前
【day60】
算法·深度优先·图论
2401_8512729932 分钟前
自定义内存检测工具
开发语言·c++·算法
☆5661 小时前
C++中的命令模式
开发语言·c++·算法
仰泳的熊猫1 小时前
题目2577:蓝桥杯2020年第十一届省赛真题-走方格
数据结构·c++·算法·蓝桥杯
CoovallyAIHub1 小时前
Pipecat:构建实时语音 AI Agent 的开源编排框架,500ms 级端到端延迟
深度学习·算法·计算机视觉
灰色小旋风1 小时前
力扣13 罗马数字转整数
数据结构·c++·算法·leetcode
2301_810160952 小时前
C++与物联网开发
开发语言·c++·算法
cm6543202 小时前
基于C++的操作系统开发
开发语言·c++·算法