1. 程式人生 > 其它 >2022-4-10 高頻面試題

2022-4-10 高頻面試題

279. 完全平方數

給你一個整數 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 }

思路:動態規劃。