【LeetCode】【Math】Sqrt(x)

题目:

实现 sqrt(int x)。

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

由于返回类型是整数,因此如果有小数将会被抹去,仅返回结果的整数部分。

Example 1:

Input: 4
Output: 2

Example 2:

Input: 8
Output: 2
Explanation: The square root of 8 is 2.82842..., and since 
             the decimal part is truncated, 2 is returned.
【解法】
class Solution:
    def mySqrt(self, x: int) -> int:
        import math
        return int(math.sqrt(x))
Runtime: 40 ms, faster than 51.33% of Python3 online submissions for Sqrt(x).
Memory Usage: 13.9 MB, less than 31.93% of Python3 online submissions for Sqrt(x).
 
【解法】binary search
class Solution:
    def mySqrt(self, x: int) -> int:
        l, r = 0, x
        while l <= r:
            mid = l + (r-l)//2
            if mid * mid <= x < (mid+1)*(mid+1):
                return mid
            elif x < mid * mid:
                r = mid
            else:
                l = mid + 1

Runtime: 48 ms, faster than 31.97% of Python3 online submissions for Sqrt(x).

Memory Usage: 13.9 MB, less than 28.87% of Python3 online submissions for Sqrt(x).

【解法】暴力枚举
class Solution:
    def mySqrt(self, x: int) -> int:
        for i in range(0,x+1):
            if i*i  == x: 
                return i
            if i*i < x:
                i += 1
            if i*i > x:
                return i-1

Runtime: 7368 ms, faster than 5.01% of Python3 online submissions for Sqrt(x).

Memory Usage: 13.9 MB, less than 40.03% of Python3 online submissions for Sqrt(x).
 
 
posted @ 2020-07-08 11:15  桃花换小鱼干好不好  阅读(171)  评论(0)    收藏  举报