欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > 算法019—— x的平方根

算法019—— x的平方根

2025/4/1 23:39:53 来源:https://blog.csdn.net/m0_75178616/article/details/146379317  浏览:    关键词:算法019—— x的平方根

力扣—— x 的平方根(点击跳转)
在这里插入图片描述
当 x = 17 时,返回 4,我们发现此时 4 的平方根小于 x
当 x = 36 时,返回 6,我们发现此时 6 的平方根等于 x
在这里插入图片描述
根据这个我们可以找到题中的 二段性

我们定义一个变量 ret 表示最终结果,最终结果会将整个数组划分成两个区域在这里插入图片描述
因此我们可以使用二分查找来解决问题
在这里插入图片描述
mid 的平方在哪个区间内,有两种情况

  1. mid * mid <= x,此时应该在右边寻找,移动 left ,让 left = mid,不能等于 mid+1,因为 mid 的位置可能是 ret ,如果等于 mid + 1,会错过
    在这里插入图片描述
  2. mid * mid> x,此时应该在左边寻找,让 right = mid - 1
    在这里插入图片描述
    注意:
  • 当 x < 1 时,我们直接返回 0 即可
  • 由于 mid * mid 数据太大,有可能溢出,所以它的类型我们定义为 long,所以 left 与 right 的类型也定义为 long,最后返回的时候要注意强转

代码如下

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

easy
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词