题目描述
解法 逼近法
一个数从0,另一个从sqrt(c)开始,0的那个只增不减,sqrt©只减不增。
bool judgeSquareSum(int c) {
long long l = 0, r = sqrt(c);
if(c == 0) return true;
while(l * l + r * r != c && l <= r) {
if(l * l + r * r > c) {
r--;
} else {
l++;
}
}
return l > r ? false : true;
}
};
这种从上到下增加,从左到右增加的题目很多都可以用这种解法,类似于两数之和。是一种简单又漂亮的方法。