您的位置:首页 > 其它

Sqrt(x)

2016-06-12 21:27 239 查看
题目描述:

Implement
int sqrt(int x)
.

Compute and return the square root of x.

计算平方根,如果直接用暴力法,会超时:
这个题显然会想到二分法,代码如下:

public class Solution {
public int mySqrt(int x) {
if(x<=1) {
return x;
}

int begin = 1;
int end = x;
int middle = 0;
while(begin<=end) {
middle = begin + (end - begin)/2;
//不要写成middle*middle==x,会溢出
if(middle==x/middle) {
return middle;
} else {
if (middle<x/middle) {
begin = middle + 1;
} else {
end = middle - 1;
}
}
}
return begin;
}
}这道题还有一种变形是给你一个数x,判断是否是一个完全平方数。基本思路一样,二分搜索1到x/2,结束条件是begin的平方大于x。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: