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 ,因为 a 2 + b 2 = c
,所以 c ≥ a & & b 所以可以优化右指针初始值