1. 解法 双指针
class Solution {
public boolean judgeSquareSum(int c) {
long l = 0;//左指针
long r = (int) Math.sqrt(c);//右指针
while(l <= r){
long result = l * l + r * r;
if(result == c){
return true;
}else if (result > c){
r--;
}else {
l++;
}
}
return false;
}
}
2. 原题 633. 平方数之和
给定一个非负整数 c
,你要判断是否存在两个整数 a
和 b
,使得
a
2
+
b
2
=
c
a^2+b^2 = c
a2+b2=c。
示例 1:
输入:c = 5
输出:true
解释:1 * 1 + 2 * 2 = 5
示例 2:
输入:c = 3
输出:false
提示:
- 0 < = c < = 2 31 − 1 0 <= c <= 2^{31} - 1 0<=c<=231−1