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

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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.mshxw.com
本文地址:https://www.mshxw.com/it/276211.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号