面试算法72:求平方根

题目

输入一个非负整数,请计算它的平方根。正数的平方根有两个,只输出其中的正数平方根。如果平方根不是整数,那么只需要输出它的整数部分。例如,如果输入4则输出2;如果输入18则输出4。

分析

整数n的平方根一定小于或等于n。同时,除0之外的所有整数的平方根都大于或等于1。因此,整数n的平方根一定在从1到n的范围内,取这个范围内的中间数字m,并判断m2是否小于或等于n。如果m2≤n,那么接着判断(m+1)2是否大于n。如果满足(m+1)2>n,那么m就是n的平方根。

public class Test {
   
    public static void main(String[] args) {
   
        System.out.println(mySqrt(18));
    }

    public static int mySqrt(int n) {
   
        int left = 1;
        int right = n;
        while (left <= right) {
   
            int mid = left + (right - left) / 2;
            if (mid <= n / mid) {
   
                if ((mid + 1) > n / (mid + 1)) {
   
                    return mid;
                }

                left = mid + 1;
            }
            else {
   
                right = mid - 1;
            }
        }

        return 0;
    }
}

相关推荐

  1. 面试算法72平方根

    2023-12-26 18:52:04       60 阅读
  2. 算法平方根 - 二分法/牛顿迭代

    2023-12-26 18:52:04       36 阅读
  3. 面试算法74:合并区间

    2023-12-26 18:52:04       47 阅读
  4. 面试算法79:所有子集

    2023-12-26 18:52:04       52 阅读
  5. 面试算法-71-加一

    2023-12-26 18:52:04       45 阅读
  6. 面试经典150题(72-77)

    2023-12-26 18:52:04       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-26 18:52:04       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-26 18:52:04       97 阅读
  3. 在Django里面运行非项目文件

    2023-12-26 18:52:04       78 阅读
  4. Python语言-面向对象

    2023-12-26 18:52:04       88 阅读

热门阅读

  1. 从法律风险的角度看待项目中不确定因素的解决

    2023-12-26 18:52:04       55 阅读
  2. SperingBoot+vue文件上传&下载&预览

    2023-12-26 18:52:04       65 阅读
  3. SQL进阶:视图

    2023-12-26 18:52:04       70 阅读
  4. 面试题-JVM 初级面试题(40道含答案)

    2023-12-26 18:52:04       44 阅读
  5. vue3学习之路

    2023-12-26 18:52:04       56 阅读
  6. perl使用find函数踩坑

    2023-12-26 18:52:04       66 阅读
  7. Kafka入门及可视化界面推荐

    2023-12-26 18:52:04       59 阅读
  8. 解析翻页设计的最佳实践和后端设计概要

    2023-12-26 18:52:04       60 阅读