Leetcode|Sqrt(x)

来源:互联网 发布:淘宝喵喵 官换机 编辑:程序博客网 时间:2024/06/05 19:04

Implement int sqrt(int x).

Compute and return the square root of x.

解法有两种:第一种是二分查找,注意边界上限可以从x/2+1开始查找。第二种方法是牛顿迭代法
解法1:

int sqrt(int n){//二分查找,8ms int res=n/2+1; int x=0; while(x<=res){    int mid=(x+res)/2;    long long sq=(long long)mid*(long long)mid;    if(sq==n) return mid;    else if(sq<n) x=mid+1;    else res=mid-1; } return res;}

解法2:

    int mySqrt(int x) {//牛顿迭代法 12ms        if(x<=0) return 0;        double res=1;        double last=0;        for(;last!=res;last=res,res=(res+x/res)/2);        return int(res);    }
0 0
原创粉丝点击