栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

LetCode#69(JAVA)给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去.

Java 更新时间:发布时间: 百科书网 趣学号

69. Sqrt(x)

题目

给你一个非负整数 x ,计算并返回 x 的 算术平方根 。

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

注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sqrtx
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

例子:


思路:

这题最先想到的是暴力法(习惯了),后来想想这种暴力解决的之前做过,用二分法效率高,大概就是正常二分找,因为返回的是整数,所以直接返回left的值,这里要注意的是中间不能用乘法,会溢出,用除法就不会溢出很关键!

代码:
public int mySqrt(int x) {
        // 特殊值判断
        if (x == 0) {
            return 0;
        }
        if (x == 1) {
            return 1;
        }

        int left = 1;
        int right = x;
        while (left < right) {
            int mid = left + (right - left + 1) / 2;
            if (mid *mid > x ) {
                right = mid - 1;
            } else {
                left = mid;
            }
        }
        return left;
    }
总结

很常规的一题二分法,其实想想二分用的真的挺多的,之前看过一个模板,二分的模板很强大,LeetCode上有,有兴趣的可以搜一下!

2021年9月28日17:38:08

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/276211.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号