069 Sqrt(x) 求平方根

实现 int sqrt(int x) 函数。
计算并返回 x 的平方根。
x 保证是一个非负整数。
案例 1:
输入: 4
输出: 2
案例 2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842..., 由于我们想返回一个整数,小数部分将被舍去。
详见:https://leetcode.com/problems/sqrtx/description/

Java实现:

方法一:暴力解

class Solution {
    public int mySqrt(int x) {
        if(x<0){
            return x;
        }
        int begin=1;
        int end=x;
        int mid=0;
        while(begin<=end){
            mid=(begin+end)>>1;
            if(mid==x/mid){
                return mid;
            }else if(mid<x/mid){
                begin=mid+1;
            }else{
                end=mid-1;
            }
        }
        return end;//结束条件end一定<begin,所以返回end
    }
}

 方法二:牛顿迭代法

class Solution {
    public int mySqrt(int x) {
        if(x<0){
            return x;
        }
        long v=x;
        while(v*v>x){
            v=(v+x/v)/2;
        }
        return (int)v;
    }
}

 

posted on 2018-04-03 12:26  lina2014  阅读(149)  评论(0编辑  收藏  举报

导航