题目
链接:leetcode链接

思路分析(二分算法)
当然你可以使用暴力查找,但是二分算法的时间复杂度更好。
我们先用暴力查找找点灵感
x :1 2 3 4 5 6 7 8
 x2:1 4 9 16 25 36 49 64
我们的目的是找到一个x使得x2恰好小于target
 观察x2序列,我们可以发现分成两部分,一边 <= target,另一边大于 target,
 由此,我们就发现了二段性,于是理所当然使用二分算法。
一些细节问题
1、这里使用的是寻找右边界的二分算法,left < right , mid = left + (right - left + 1) / 2;
 2、target的范围是int,但mid * mid可能超出int的范围,需要把mid设置成long long类型
 3、right - left + 1,因为这里出现了 + 1,所以可能超出int的范围,所以left就不从0开始,从1开始即可,对0进行特判即可。
代码
 int mySqrt(int x) {
        if(x == 0)
        return 0;
        int left = 1,right = x -1;
        while(left < right)
        {
            long long mid = left + (right - left + 1) / 2;
            if(mid * mid <= x) left = mid;
            else right = mid - 1;
        }
        return left;
    }






![[单master节点k8s部署]24.构建EFK日志收集平台(三)](https://i-blog.csdnimg.cn/direct/eb32ace4b7ca44dd8797546bb25dcd58.png)












