int mySqrt(int x) {
int left = 1;
int right = x / 2;
int mid = 0;
if(x == 0||x==1)
return x;
while(left + 1<right)
{
mid = left + (right - mid)/2;
if(mid<=x/mid)
left = mid;
else
right = mid - 1;
}
return right <= x/right ? right : left;
}
ps 这个题 mid <= x/mid 这个是为了防止int 溢出
春节7天练 | Day 3:排序和二分查找
最新推荐文章于 2025-07-28 15:27:06 发布
本文介绍了一种求解整数平方根的有效算法,通过二分查找的方式在O(logn)的时间复杂度内找到最接近的平方根。特别注意了防止整数溢出的问题。
1633

被折叠的 条评论
为什么被折叠?



