[LeetCode102]Sqrt(x)

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);
    }





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值