1. 我的AC
方法一
- 超時
class Solution(object):
def mySqrt(self, x):
"""
:type x: int
:rtype: int
"""
for n in range(x/2 + 1):
if x >= n ** 2 and x < (n + 1) ** 2:
return n
方法二
- 冪符號
** 0.5
class Solution(object):
def mySqrt(self, x):
"""
:type x: int
:rtype: int
"""
return int(x ** 0.5)
方法三
- 二分查找

二分查找.png
class Solution(object):
def mySqrt(self, x):
"""
:type x: int
:rtype: int
"""
l, r = 0, x
while l <= r:
mid = (l + r) // 2
if x >= mid ** 2 and x < (mid + 1) ** 2:
return mid
elif x < mid ** 2:
r = mid
else:
l = mid + 1
2. 小結(jié)
- 整數(shù)開根號
int(x ** 0.5)
- 兩個變量同時賦值
錯誤
l = 0, r = x
正確
l, r = 0, x
- 兩種除法運(yùn)算符:
/、//
關(guān)于/:
- 只要除數(shù)中有一個數(shù)是浮點(diǎn)數(shù),那么得到的結(jié)果也是浮點(diǎn)數(shù)
>>> 3/2
1
>>> 3/2.0
1.5
>>> 3.0/2
1.5
>>> 10/3.0
3.3333333333333335
關(guān)于//:
- 兩個整型相除,得到整型
- 如果一個浮點(diǎn)數(shù)除以一個非浮點(diǎn)數(shù)得到的還會是一個浮點(diǎn)數(shù),但是,計算的結(jié)果卻是忽略小數(shù)部分
>>> 3//2
1
>>> 3//2.0
1.0
>>> 3.0//2
1.0
>>> 3.0//2.0
1.0