1279. 完全平方数 - 力扣(LeetCode)
方法一:动态规划

方法二:四平方和定理

class Solution {
public:
bool issquares(int n)//是否为完全平方数{int y=sqrt(n);return y*y==n;}bool check2(int n){return issquares(n);}bool check4(int n){while(n%4==0)n/=4;return n%8==7;}int numSquares(int n) {// vector<int>f(n+10,0x3f3f3f3f);//方法一,O(N*logn)// f[0]=0;// for(int i=1;i<=n;i++)// {// for(int j=1;j*j<=i;j++)// {// f[i]=min(f[i],1+f[i-j*j]);// }// }// return f[n];// }//四平方和定理 O(根号N+logn)if(check4(n))return 4;if(issquares(n))return 1;for(int i=1;i*i<=n;i++){int j=n-i*i;if(check2(j))return 2;}return 3;}
};