Such a nice two pointer problem

class Solution {
public:
bool judgeSquareSum(int c) {
if (c < 0) return false;
long long left = 0, right = (long long)(sqrt(c));
while (left <= right){
long long sum = left*left + right*right;
if (sum == c) return true;
if (sum < c) left++;
if (sum > c) right--;
}
return false;
}
};

--

--

No responses yet