
描述:log(n)
代码:
class Solution:
# @param x, an integer
# @return an integer
def getVal(self, begin, end, x):
if end == begin :
return begin
if end == begin + 1:
return begin while True:
mid = (begin + end) / 2
tmp = mid * mid if tmp == x:
return mid
elif tmp < x:
return self.getVal(mid, end, x)
elif tmp > x:
return self.getVal(begin, mid, x) def sqrt(self, x):
if x == 0: return 0 val = 1
while True:
tmp = val * val if tmp == x:
return val
elif tmp > x:
return self.getVal(val/2, val, x)
else:
val *= 2