题目:
### 解题思路
注意c的范围,所以使用long。
首先计算出c的算术平方根并且去掉小数部分,之后使用双指针,分别放置于0和n(c的算术平方根的整数部分)的位置。
如果平方和大于c,则n--;如果小于,则n++;如果相等,则返回true。
如果最后m>n,说明找不到这两个数,则返回false。
class Solution {
public:
bool judgeSquareSum(int c) {
long n=(long)sqrt(c),m=0;
while(m<=n){
if(m*m+n*n==c) return true;
else if(m*m+n*n<c) m++;
else n--;
}
return false;
}
};