力扣---完全平方数

思路:

还是比较好想的,g[i]定义为和为 i 的完全平方数的最少数量。那么递推关系式是g[i]=min(g[i-1],g[i-4],g[i-9],...)+1,数组初始化是g[0]=0,g[1]=1。注意这里要对g[0]初始化,(举个例子)因为在遍历到g[4]时,g[4]=min(g[4-1],g[4-4])+1。

代码:

C++:

cpp 复制代码
class Solution {
public:
    int numSquares(int n) {
        vector<int> g(n+1,0x3f3f3f3f);
        g[0]=0,g[1]=1;
        for(int i=2;i<=n;i++){
            for(int j=1;i-j*j>=0;j++){
                int temp=j*j;
                g[i]=min(g[i],g[i-temp]+1);
            }
        }
        return g[n];
    }
};

Python:

python 复制代码
class Solution:
    def numSquares(self, n: int) -> int:
        g=[0x3f3f3f3f]*(n+1)
        g[0]=0
        g[1]=1
        for i in range(2,n+1):
            j=1
            while i-j*j>=0:
                temp=j*j
                g[i]=min(g[i],g[i-temp]+1)
                j+=1
        return g[n]
相关推荐
XiaoMu_0016 小时前
基于Django+Vue3+YOLO的智能气象检测系统
python·yolo·django
superlls7 小时前
(算法 哈希表)【LeetCode 349】两个数组的交集 思路笔记自留
java·数据结构·算法
honder试试7 小时前
焊接自动化测试平台图像处理分析-模型训练推理
开发语言·python
田里的水稻7 小时前
C++_队列编码实例,从末端添加对象,同时把头部的对象剔除掉,中的队列长度为设置长度NUM_OBJ
java·c++·算法
心本无晴.7 小时前
Python进程,线程
python·进程
纪元A梦7 小时前
贪心算法应用:保险理赔调度问题详解
算法·贪心算法
Ripple123128 小时前
数据结构:顺序表与链表
数据结构·链表
Jayden_Ruan8 小时前
C++逆向输出一个字符串(三)
开发语言·c++·算法
一个响当当的名号9 小时前
B树,B+树,B*树(无代码)
数据结构·b树
点云SLAM9 小时前
C++ 常见面试题汇总
java·开发语言·c++·算法·面试·内存管理