Description
Given a non-negative integer c, your task is to decide whether there're two integers a and b such that a2 + b2 = c.
Example 1:
Input: 5
Output: True
Explanation: 1 * 1 + 2 * 2 = 5
Example 2:
Input: 3
Output: False
Solution
Two-pointers, time O(sqrt(N)), space O(1)
注意high可以从sqrt(c)开始算起,不用从c开始哦!
class Solution {
public boolean judgeSquareSum(int c) {
int low = 0;
int high = (int) Math.sqrt(c);
while (low <= high) {
int sum = low * low + high * high;
if (sum == c) {
return true;
} else if (sum < c) {
++low;
} else {
--high;
}
}
return false;
}
}