LeetCode刷题集Android开发经验谈Android开发

Day37 x 的平方根

2021-03-03  本文已影响0人  Shimmer_

实现 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. 牛顿迭代、袖珍计算器算法(盲区)

上一篇下一篇

猜你喜欢

热点阅读