Input: 5
Output: True
Explanation: 1 * 1 + 2 * 2 = 5
class Solution {
public boolean judgeSquareSum(int c) {
for (long num = 0; num <= (long)Math.sqrt(c); num++) {
long target = c - num * num;
if (isSquareNum(0, target, target)) {
return true;
}
}
return false;
}
public boolean isSquareNum(long start, long end, long target) {
long mid = 0;
while (start <= end) {
mid = start + (end - start)/2;
if (mid * mid == target) {
return true;
}
else if (mid * mid < target) {
start = mid + 1;
}
else {
end = mid - 1;
}
}
return false;
}
}