要求:找a和b的平方和等于c,c在int范围
思路:双指针,注意溢出用减法,时间O(n),空间O(1)
class Solution {
public:
bool judgeSquareSum(int c) {
int a=0;
int b=(int)sqrt(c);
while(a<=b){
if(0x7fffffff-a*a<b*b||a*a+b*b>c)
b--;
else if(a*a+b*b<c)
a++;
else return true;
}
return false;
}
};