279. 完全平方数 leetcode JAVA

题目:

给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。

示例 1:

输入: n = 12 输出: 3 解释: 12 = 4 + 4 + 4.

示例 2:

输入: n = 13 输出: 2 解释: 13 = 4 + 9.

解题思路:

使用动态规划的作法,前确定之前的整数n由几个完全平方数构成。

1class Solution { 2 public int numSquares(int n) { 3 int[] a =new int [n+1]; 4 a[0] = 0; 5 a[1] = 1; 6 for(int i = 2; i <= n;i++) 7 { 8 int temp = Integer.MAX_VALUE; 9 //int temp1 = Integer.MIN_VALUE; 10 for(int j = 1; j*j <= i;j++) 11 { 12 temp = Math.min(temp,a[i-j*j]); 13 } 14 a[i] = temp + 1; 15 } 16 return a[n]; 17 } 18}
点赞
收藏

评论区

加载中...

相关推荐

python刷题-最大最小公倍数

问题描述已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。输入格式输入一个正整数N。输出格式输出一个整数,表示你找到的最小公倍数。样例输入9样例输出504数据规模与约定1<N<106。Nint(input())Min1ifN<2:print(N)elifN%2

Java判断一个数是不是快乐数

快乐数的定义:快乐数(happynumber)有以下的特性:在给定的进位制下,该数字所有数位(digits)的平方和,得到的新数再次求所有数位的平方和,如此重复进行,最终结果必为1。以十进制为例:28→2²8²68→6²8²100→1²0²0²132→3²2²13→1²3²10→1²0²137→3

python刷题-进制转换

十六进制转八进制问题描述  给定n个十六进制正整数,输出它们对应的八进制数。输入格式  输入的第一行为一个正整数n(1<n<10)。  接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式  输出n行,每行为输入对应的八进制正整数。  【注意】  输入的十六进制数不会有

Java练习(二)——寻找一个加100为完全平方,再加168还是完全平方的数

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?(该数小于100)【提示:如果一个整数是另外一个整数的平方,那么该数被称为完全平方数。】packagetest;publicclassPratice2publicstaticvoidmain(Stringargs)//TODOAu

LeetCode 92. 反转链表 II(Reverse Linked List II)

题目描述反转从位置_m_到_n_的链表。请使用一趟扫描完成反转。说明:1≤ _m_ ≤ _n_ ≤链表长度。示例:输入:12345NULL,m2,n4输出:14325NULL解题思路本题类似于反转链表

LeetCode 69 题

1.题目要求实现 intsqrt(intx) 函数。计算并返回 _x_ 的平方根,其中 _x_ 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例1:输入:4输出:2示例2:输入:8输出:2说