LeetCode 69.sqrt(x)

题目描述
请实现 int sqrt(int x)。

请计算并返回 xx 的正平方根,保证 xx 是一个非负整数。
注意返回类型是整数,所以我们只返回正平方根的整数部分。

样例1
输入:4
输出:2
样例2
输入:8
输出:2
解释:8的正平方根是 2.82842...,它的整数部分是2.

算法:二分

直接套模板二分即可,注意模板的选取(这里要选小于等于目标数的最大值,所以选第二个)

class Solution {
public:
    int mySqrt(int x) {
        int l=0,r=x;
        while(l<r){
            int mid=l+r+1ll>>1;
            if(mid<=x/mid)l=mid;
            else r=mid-1;
        }
        return l;
    }
};

 

posted @ 2019-07-08 22:34  YF-1994  阅读(173)  评论(0编辑  收藏  举报