给定一个非负整数 c
,你要判断是否存在两个整数 a
和 b
,使得 a2 + b2 = c
。
class Solution {
public boolean judgeSquareSum(int c) { //双指针思想
long low=0,high=(int)Math.sqrt(c);
while(low<=high){
long sum=low*low+high*high;
if(sum==c){
return true;
}else if(sum>c){
high--;
}else{
low++;
}
}
return false;
}
}
// class Solution { //暴力解法
// public boolean judgeSquareSum(int c) {
// for(int a=0;a<=Math.sqrt(c);a++){
// for(int b=0;b<=Math.sqrt(c);b++){
// if(a*a+b*b==c){
// return true;
// }
// }
// }
// return false;
// }
// }
时间复杂度O(sqrt(n))
空间复杂度O(1)