参考题解:官方题解
题目:
思路:
- 这道题其实蛮简单的,我用 TreeSet 配合 0 到 sqrt 扫描过了。
- 但是答案提供了另一种思路:双指针。
- 左指针为 0, 右指针为
sqrt(c)
,然后往中间找就行。
题解:
class Solution {
public boolean judgeSquareSum(int c) {
int left = 0;
int right = (int) Math.sqrt(c);
while (left <= right) {
int sum = left * left + right * right;
if (sum == c) {
return true;
} else if (sum > c) {
right--;
} else {
left++;
}
}
return false;
}
}