633. 平方数之和
双指针法
class Solution
{
public:
bool judgeSquareSum(int c)
{
long left = 0, right = sqrt(c);
while (left <= right)
{
long tmp = left * left + right * right;
if (tmp == c)
{
return true;
}
else if (tmp > c)
{
right--;
}
else
{
left++;
}
}
return false;
}
};
就是左右指针优化。要注意数据类型要为 l o n g long long,因为 a 2 + b 2 = c a^2+b^2=c a2+b2=c,所以 c ≥ a & & b c \ge a \&\& b c≥a&&b,所以可以优化右指针初始值