题目:
题解:
class Solution {public int numSquares(int n) {if (isPerfectSquare(n)) {return 1;}if (checkAnswer4(n)) {return 4;}for (int i = 1; i * i <= n; i++) {int j = n - i * i;if (isPerfectSquare(j)) {return 2;}}return 3;}// 判断是否为完全平方数public boolean isPerfectSquare(int x) {int y = (int) Math.sqrt(x);return y * y == x;}// 判断是否能表示为 4^k*(8m+7)public boolean checkAnswer4(int x) {while (x % 4 == 0) {x /= 4;}return x % 8 == 7;}
}