问题描述:
Given a non-negative integer c
, your task is to decide whether there're two integers a
and b
such that a2 + b2 = c.
示例:
Input: 5 Output: True Explanation: 1 * 1 + 2 * 2 = 5
Input: 3 Output: False问题分析:
分析可知,a和b的取值范围在[0,√c]之间,于是乎我们可以遍历寻找a和b。
过程详见代码:
class Solution {
public:
bool judgeSquareSum(int c) {
int high = sqrt(c);
int low = 0;
while (low < high)
{
int sum = low * low + high * high;
if (sum == c) return true;
else if (sum < c) low++;
else high--;
}
if (low * low + high * high == c) return true;
return false;
}
};