Given a non-negative integer c, decide whether there're two integers a and b such that a2 + b2 = c.
Example 1:
Input: c = 5 Output: true Explanation: 1 * 1 + 2 * 2 = 5
Example 2:
Input: c = 3 Output: false
Constraints:
0 <= c <= 231 - 1class Solution {
public boolean judgeSquareSum(int c) {
long a = 0, b = (long) Math.sqrt(c), s;
while (a <= b) {
s = a * a + b * b;
if (s == c)
return true;
else if (s < c)
a++;
else
b--;
}
return false;
}
}