Day37 x 的平方根

作者: Shimmer_ | 来源:发表于2021-03-03 09:19 被阅读0次

    实现 int sqrt(int x) 函数。

    https://leetcode-cn.com/problems/sqrtx/

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

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

    示例1:

    输入: 4
    输出: 2

    示例2:

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

    Java解法

    思路:

    • 一开始不知道怎么处理,看了下提示,二分查找可以用来处理这个
    package sj.shimmer.algorithm.m2;
    
    /**
     * Created by SJ on 2021/3/2.
     */
    
    class D37 {
        public static void main(String[] args) {
            System.out.println(mySqrt(4));
            System.out.println(mySqrt(8));
            System.out.println(mySqrt(48));
        }
        public static int mySqrt(int x) {
            int left = 0;
            int right = x;
            int result = -1;
            while (left<right){
                int mid = (left+right)/2;
                if ((long)mid*mid<=x) {
                    result = mid;
                    left = mid+1;
                }else {
                    right = mid-1;
                }
            }
            return result;
        }
    }
    
    
    image

    官方解

    https://leetcode-cn.com/problems/sqrtx/solution/x-de-ping-fang-gen-by-leetcode-solution/

    1. 二分查找

      参考解法,边界判断坑了我一下,不过大佬写法就是牛逼

      • 时间复杂度:O(logx)
      • 空间复杂度:O(1)
    2. 牛顿迭代、袖珍计算器算法(盲区)

    相关文章

      网友评论

        本文标题:Day37 x 的平方根

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