题目
Given a non-negative integer c, your task is to decide whether there're two integers a and b such that a^2 + b^2 = c.
答案
class Solution {
public boolean judgeSquareSum(int c) {
Set<Integer> set = new HashSet<>();
for(int i = 0; i <= Math.sqrt(c); i++) {
set.add(i*i);
if(set.contains(c - i*i)) return true;
}
return false;
}
}
class Solution {
public boolean judgeSquareSum(int c) {
if(c < 0) return false;
int l = 0, r = (int)Math.sqrt(c);
while(l <= r) {
int curr = l*l + r*r;
if(curr == c) {
return true;
}
else if(curr < c) {
l++;
}
else {
r--;
}
}
return false;
}
}