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