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)
方法三
- 二分查找
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. 小结
- 整数开根号
int(x ** 0.5)
- 两个变量同时赋值
错误
l = 0, r = x
正确
l, r = 0, x
- 两种除法运算符:
/
、//
关于/
:
- 只要除数中有一个数是浮点数,那么得到的结果也是浮点数
>>> 3/2
1
>>> 3/2.0
1.5
>>> 3.0/2
1.5
>>> 10/3.0
3.3333333333333335
关于//
:
- 两个整型相除,得到整型
- 如果一个浮点数除以一个非浮点数得到的还会是一个浮点数,但是,计算的结果却是忽略小数部分
>>> 3//2
1
>>> 3//2.0
1.0
>>> 3.0//2
1.0
>>> 3.0//2.0
1.0
网友评论