您的位置:首页 > 其它

[leetcode]633. Sum of Square Numbers

2017-07-08 10:52 295 查看
Given a non-negative integer 
c
, your task is to decide whether there're two integers 
a
 and 
b
 such
that a2 + b2 = c.

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: