c
, your task is to decide whether there're two integers a
and b
such that a2 + b2
Example 1:
Input: 5
Output: True
Explanation: 1 * 1 + 2 * 2 = 5
Example 2:
Input: 3
Output: False
方法一:两遍for循环, 复杂度o(n2), 会time limit 报错
public boolean judgeSquareSum(int c) {
for(int i=0;i<=c;i++) {
for(int j=0;j<=c;j++) {
if(i*i+j*j==c) {
return true;
}
}
}
return false;
}
方法二:
从0 和sqrt(n)两端分别查找
public boolean judgeSquareSum2(int c) {
int low = 0;
int high = (int)Math.sqrt(c);
while(low<=high) {
int sum = low*low+high*high;
if(sum<c) {
low++;
} else if(sum>c) {
high--;
} else {
return true;
}
}
return false;
}