您的位置:首页 > 其它

[LeetCode102]Sqrt(x)

2014-06-20 01:01 405 查看
Implement
int sqrt(int x)
.

Compute and return the square root of x.
Analysis:
In an interview, they expected the solution is using binary search, not Newton's Method.

Java

public int sqrt(int x) {
        long high = x;
        long low = 0;
        if(x<=0) return 0;
        if(x==1) return 1;
        while(high-low>1){
        	long mid = low+(high-low)/2;
        	if(mid*mid<=x)
        		low = mid;
        	else {
				high = mid;
			}
        }
        return (int) low;
    }


C++

int sqrt(int x) {
       unsigned long long begin =0;
    unsigned long long end = (x+1)/2;
    unsigned long long mid;
    unsigned long long temp;
    while(begin<end){
        mid = begin+(end-begin)/2;
        temp = mid*mid;
        if(temp == x) return mid;
        else if(temp<x) begin = mid+1;
        else end = mid-1;
    }
    temp = end*end;
    if(temp>x)
        return end-1;
    else
        return end; 
    }


newton method

int sqrt(int x) {
      if(x==0)
        return 0;
    double pre;
    double cur =1;
    do{
        pre = cur;
        cur = x/(2*pre)+ pre/2.0;
    }while(abs(cur-pre)>0.0000001);
    return int(cur);
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: