给你一个非负整数 x
,计算并返回 x
的 算术平方根 。
由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。
示例 1:
输入:x = 4
输出:2
示例 2:
输入:x = 8
输出:2
class Solution(object):
def mySqrt(self, x):
if x == 0:
return 0
else:
for i in range(x+1):
if x == i*i:
return i
elif x > i*i and x < (i+1)*(i+1):
return i
但是会出错
然后我就换成while没报内存的错误
class Solution(object):
def mySqrt(self, x):
if x == 0:
return 0
else:
i = 0
while i<=x:
if x == i*i:
return i
elif x > i*i and x < (i+1)*(i+1):
return i
else:
i+=1
后来又看到用二分的,感觉自己数据结构白学了......
class Solution(object):
def mySqrt(self, x):
low=0
high=x
res = 0
if x == 0:
return 0
else:
while low<=high:
mid = (low+high)//2
if x>=mid*mid:
res=mid
low=mid+1
else:
high=mid-1
return res