【二分查找】LeetCode 69. x 的平方根
题目链接
思路
基本思路是在区间 \([1, x/2]\) 中使用二分查找(因为平方根必然小于 \(x/2\)),只不过需要注意一些细节。
- 因为使用的是闭区间查找,所以判断循环终止的条件为 \(left \leq right\)。
- 为了防止溢出,使用
mid = (right - left) / 2 + left
和mid == x / mid
进行运算与判断。 - 同样是因为闭区间查找,所以在 \(mid\) 已经判断过的情况下,变换左右边界应该跳过 \(mid\),所以变换为 \(left = mid + 1\) 和 \(right = mid - 1\)。
- 因为终止条件为 \(left \leq right\),所以在跳出循环的时候必然有 \(right < left\),所以要返回的是 \(right\)。
代码
class Solution {
public int mySqrt(int x) {
if(x == 0){
return 0;
}
if(x == 1){
return 1;
}
int left = 1;
int right = x / 2;
while(left <= right){
int mid = (right - left) / 2 + left;
if(mid == x / mid){
return mid;
}else if(mid > x / mid){
right = mid - 1;
}else{
left = mid + 1;
}
}
return right;
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)