leetcode算法练习【69】x 的平方根

所有题目源代码:Git地址

题目

实现 int sqrt(int x) 函数。

计算并返回 x 的平方根,其中 x 是非负整数。

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

示例 1:

输入: 4
输出: 2
示例 2:

输入: 8
输出: 2
说明: 8 的平方根是 2.82842..., 
     由于返回类型是整数,小数部分将被舍去。


方案:快排思想

  • 设立边界,利用快排思想,快速寻找处ans2<x &&(ans+1)2>x的数

class Solution {
        public int mySqrt(int x) {
            if (x <= 0) {
                return 0;
            }
            long ans = 1;
            long min = 1;
            long max = x;
            while (true) {
                if (ans == max || min == max - 1) {
                    return (int)ans;
                } else if (ans * ans < x) {
                    min = ans;
                    ans = (min + max) / 2;
                } else if (ans * ans > x) {
                    max = ans;
                    ans = (min + max) / 2;
                } else if (ans * ans == x) {
                    return (int)ans;
                }
            }

        }
    }
复杂度计算
  • 时间复杂度:O(log(n))
  • 空间复杂度:O(1)
发布了123 篇原创文章 · 获赞 173 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/symuamua/article/details/105625861
今日推荐