633.平方数之和
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。
示例1:
输入: 5
输出: True
解释: 1 * 1 + 2 * 2 = 5
示例2:
输入: 3
输出: False
分析: 用左右两个指针,左指针从0开始向右,右指针从c的开平方数开始向左,若平方和小于c左指针移动,若大于右指针移动,等于则返回。
class Solution {
public:
bool judgeSquareSum(int c) {
if(c<0) return false;
int sq=sqrt(c);
int left=0;
int right=sq;
int temp=0;
while(left<=right)
{
temp=left*left+right*right;
if(temp<c) left++;
else if(temp==c) return true;
else right--;
}
return false;
}
};