Loading

Sqrt(x)

Given a non-negative integer x, return the square root of x rounded down to the nearest integer. The returned integer should be non-negative as well.

You must not use any built-in exponent function or operator.

For example, do not use pow(x, 0.5) in c++ or x ** 0.5 in python.
Solution:

class Solution(object):
    def mySqrt(self, x):
        l, r, ans = 0, x, -1
        while l <= r:
            mid = (l + r) // 2
            if mid ** 2 <= x:
                ans = mid
                l = mid + 1
            else:
                r = mid - 1
        return ans

思路:

要计算非负整数 x 的平方根并四舍五入到最接近的整数,我们可以使用二分查找的方法来实现。首先,我们可以定义两个整数 left 和 right 来表示 x 的平方根的区间范围。初始时,我们可以将 left 和 right 分别设置为 0 和 x。

然后,我们可以使用类似于二分查找的方法来缩小区间范围,直到 left 和 right 相等为止。具体来说,我们可以计算中间值 mid = (left + right) / 2,然后根据 mid 的平方与 x 的大小关系来更新 left 和 right。

具体来说,如果 mid 的平方小于 x,那么 left 应该设置为 mid + 1;否则,right 应该设置为 mid - 1。这样,当 left 和 right 相等时,就说明找到了 x 的平方根。

最后,我们可以将找到的整数平方根向下取整并返回结果。
posted @ 2023-06-19 10:16  Artwalker  阅读(15)  评论(0编辑  收藏  举报
Live2D