当前位置:   article > 正文

每日OJ题_算法_二分查找③_力扣69. x 的平方根

每日OJ题_算法_二分查找③_力扣69. x 的平方根

目录

力扣69. x 的平方根 

解析代码


力扣69. x 的平方根 

69. x 的平方根 - 力扣(LeetCode)

难度 简单

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

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

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

示例 1:

输入:x = 4
输出:2

示例 2:

输入:x = 8
输出:2
解释:8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。

提示:

  • 0 <= x <= 2^31 - 1
  1. class Solution {
  2. public:
  3. int mySqrt(int x) {
  4. }
  5. };

解析代码

暴力解法可以遍历1到X / 2的所有整数,因为这段整数是有序的,所有可以用二分算法,用上一题力扣34总结的进阶二分套路,求右端点:

  1. class Solution {
  2. public:
  3. int mySqrt(int x) {
  4. if(x <= 1) // 看给的范围处理边界
  5. {
  6. return x / 1; // 如果是1的话下面right就是0了
  7. }
  8. int left = 0, right = x / 2;
  9. while(left < right)
  10. {
  11. long long mid = left + (right - left + 1) / 2;
  12. if(mid * mid > x) // 开long long防溢出
  13. {
  14. right = mid - 1;
  15. }
  16. else
  17. {
  18. left = mid;
  19. }
  20. }
  21. return right;
  22. }
  23. };
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/85015
推荐阅读
相关标签
  

闽ICP备14008679号