LeetCode69:Sqrt(x)(二分法)

Implement int sqrt(int x).

Compute and return the square root of x, where x is guaranteed to be a non-negative integer.

Since the return type is an integer, the decimal digits are truncated and only the integer part of the result is returned.

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.

LeetCode:链接

这道题是用二分法做的,每次从中间卡一半相乘看是否满足要求,这样才能让搜索的时间变短。

class Solution(object):
    def mySqrt(self, x):
        """
        :type x: int
        :rtype: int
        """
        low = 0
        high = x
        while low <= high:
            print(low, high)
            mid = (low + high) // 2
            temp = mid * mid 
            if temp < x:
                low = mid + 1
            elif temp > x:
                high = mid - 1
            else:
                return mid
        return high

猜你喜欢

转载自blog.csdn.net/mengmengdajuanjuan/article/details/84134688