2022-4-10 高频面试题

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

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

 1 class Solution {
 2     public int numSquares(int n) {
 3         int[] ans=new int[n+1];
 4         Set<Integer> 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 }

思路:动态规划。

posted on 2022-04-10 17:32  阿ming  阅读(21)  评论(0编辑  收藏  举报

导航