2022-4-10 高频面试题


279. 完全平方数

给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。

完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。

 1 class Solution {
 2     public int numSquares(int n) {
 3         int[] ans=new int[n+1];
 4         Set set=new HashSet<>();
 5         for (int i=1;i*i<=n;i++) {
 6             set.add(i*i);
 7             ans[i*i]=1;
 8             //System.out.println(i*i);
 9         }
10         for (int i=2;i<=n;i++) {
11             if (!set.contains(i)) {
12                 ans[i]=i;
13                 for (int j=1;j*j<=i;j++) 
14                 {
15                     ans[i]=Math.min(ans[i],ans[j*j]+ans[i-j*j]);
16                     //System.out.println(i+" "+ans[i]);
17                 }
18             }
19         }
20         return ans[n];
21     }
22 }

思路:动态规划。

相关