题目描述:
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。
示例1:
输入: 5
输出: True
解释: 1 * 1 + 2 * 2 = 5
示例2:
输入: 3
输出: False
方法1:
主要思路:
(1)使用双指针,找出数 c 的开方,作为右指针,0作为左指针,找满足要求的结果;
class Solution {
public:
bool judgeSquareSum(int c) {
//左右指针的初始值
long long left=0;
long long right=sqrt(c);
while(left<=right){
if(left*left+right*right==c){//满足要求
return true;
}
else if(left*left+right*right>c){//调整右指针
--right;
}
else if(left*left+right*right<c){//调整左指针
++left;
}
}
return false;//跳出循环,返回false
}
};