给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。 示例 1: 输入:c = 5 输出:true 解释:1 * 1 + 2 * 2 = 5 示例 2: 输入:c = 3 输出:false
class Solution {
public boolean judgeSquareSum(int c) {
/**
双指针问题
可以让left=1 right=根号c
如果left^2+right^2=c return true
如果left^2+right^2<c left++;
如果left^2+right^2>c right--;
return false;
*/
int left=0,right=(int)Math.sqrt(c);
while(left<=right){
int sum=left*left+right*right;
if(sum==c){
return true;
}else if(sum<c){
left++;
}else{
right--;
}
}
return false;
}
}