题目描述:
标签:数组 双指针 二分查找
给定一个非负整数
c
,你要判断是否存在两个整数a
和b
,使得a2 + b2 = c
。
代码:
思路分析:
1、解析:其实可以看成在0~c的数组范围内寻找两个数的平方和与c比较
2、因为是有序数组,所以定义双指针left =0 和right = (int)Math.sqrt(c)
3、当前和sum=left*left + right * right,有以下三种情况:
①sum==c,则返回true
②sum < c,则left++
③sum > c,则right--
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){
left++;
}else{
right--;
}
}
return false;
}
}