public static int sqrt(int a) {
        if (a < 0 || a == 0 || a == 1) return a;
        int startNum = 0;
        int endNum = a;
        for (; startNum + 1 < endNum; ) {//保证整数情况下,不相等
            int mid = (startNum + endNum) >> 1;
            if ((long) mid * mid < a) { 转换成long是防止,整型相乘后int溢出
                startNum = mid;
            } else if ((long) mid * mid > a) {
                endNum = mid;
            } else {
                return mid;
            }
        }
        return startNum;
    }

 

相关文章:

  • 2021-09-19
  • 2021-07-23
  • 2021-10-27
  • 2022-12-23
  • 2021-07-25
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-14
  • 2021-09-08
  • 2021-07-23
  • 2021-11-15
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案