2022-4-10 高频面试题
给你一个整数 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<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 }
思路:动态规划。