美文网首页
Leetcode 精选之二分查找( x 的平方根)

Leetcode 精选之二分查找( x 的平方根)

作者: Kevin_小飞象 | 来源:发表于2020-03-30 20:53 被阅读0次

    题目描述

    实现 int sqrt(int x) 函数。

    计算并返回 x 的平方根,其中 x 是非负整数。

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

    示例 1:

    输入: 4
    输出: 2
    示例 2:
    
    输入: 8
    输出: 2
    说明: 8 的平方根是 2.82842..., 
         由于返回类型是整数,小数部分将被舍去。
    

    题目链接:力扣

    解题思路

    public class Main {
        public static void main(String[] args) {
            System.out.println(mySqrt(4));
            System.out.println(mySqrt(8));
        }
        
        public static int mySqrt(int x) {
            if (x <= 1) {
                return x;
            }
            int l = 1, h = x;
            while (l <= h) {
                int mid = l + (h - l) / 2;
                int sqrt = x / mid;
                if (sqrt == mid) {
                return mid;
                } else if (mid > sqrt) {
                    h = mid - 1;
                } else {
                    l = mid + 1;
                }
            }
            return h;
        }
    }
    
    

    测试结果

    image.png

    相关文章

      网友评论

          本文标题:Leetcode 精选之二分查找( x 的平方根)

          本文链接:https://www.haomeiwen.com/subject/mbjbuhtx.html