LeetCode69x的平方根-----二分法

题目表述

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

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

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

示例:

输入:x = 4

输出:2

二分法

二分查找的下界为 00,上界可以定为X/2+1。在二分查找的每一步中,我们只需要比较中间元素mid 的平方与 x 的大小关系,并通过比较的结果调整上下界的范围。由于我们所有的运算都是整数运算,不会存在误差,最后当right和left相等时,在判断一次即可返回right,为什么不是返回left? 因此最终left > right,需要返回平方根的整数部分,x的平方根大小是在right-left之间的,所以返回right即可。

class Solution { public int mySqrt(int x) { int left = 0; int right = x / 2 + 1; while(left <= right){ int mid = left + (right - left) / 2; if((long)mid * mid == x){ return mid; }else if((long) mid * mid > x){ right = mid - 1; }else{ left = mid + 1; } } return right; } }

__EOF__

本文作者Younger
本文链接https://www.cnblogs.com/youngerwb/p/16159141.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   YoungerWb  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示