141. Sqrt(x)
Description
- Sqrt(x)
Implement int sqrt(int x).
Compute and return the square root of x.
Example
Example 1:
Input: 0
Output: 0
Example 2:
Input: 3
Output: 1
Explanation:
return the largest integer y that y*y <= x.
Example 3:
Input: 4
Output: 2
Challenge
O(log(x))
我的代码
class Solution:
"""
@param x: An integer
@return: The sqrt of x
"""
def sqrt(self, x):
# write your code here
if x == 1 or x == 0:
return x
r = int(x/2)
while r*r > x:
r = int(r/2)
#print(r)
for i in range(r,2*r+2):
if i*i > x:
#print(i,x)
break
if i*i == x:
return i
else:
return i-1
别人的代码
def mySqrt(self, x):
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
思路:
我用二分法只是找了一个大区间,其实应该整体用二分法