【每日一题】2021年12月11日-69. Sqrt(x)/x的平方根

给你一个非负整数 x ,计算并返回 x 的 算术平方根 。

由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。

注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sqrtx
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

 方法:二分查找

class Solution {
    public int mySqrt(int x) {
        if(x == 1) {
            return 1;
        }
        int min = 0;
        int max = x;
        //循环条件,二者必须相差1☆
        while(max > min + 1) {
            //mid的值不是min + (max + min) / 2;而是一加一减
            //int mid = (max + min) / 2;
            int mid = min + ((max - min) >> 1);//必须加括号☆
            if(x / mid < mid) {
                //不是自增自减☆
                max = mid;
            } else {
                min = mid;
            }
        }
        return min;
    }
}

  

posted @ 2021-12-11 21:11  哥们要飞  阅读(34)  评论(0编辑  收藏  举报