考查跟数学运算(非索引,下标)二分法!!!
跟数学加减乘除有关的二分,注意:
- 取 mid 值要注意加一减一,不能直接取一半!!!
- 下限初值尽可能设为0,不要设置为1
- 循环条件写成 low <= high,不要丢掉等号!!
class Solution(object):
def isPerfectSquare(self, num):
"""
:type num: int
:rtype: bool
"""
low, high = 0, num
while low <= high:
mid = (low + high) / 2
if mid * mid == num:
return True
elif mid * mid < num:
low = mid + 1
else:
high = mid - 1
return False
在说明一下,python2 和 python3 中, /
是除法,//
是取整,但是 python2 有类型要求,整数与整数进行运算,最终都会得到整数,而 python3 则不会,它会得到精度更高的数。
python2 中: 3 / 2 = 1
python3 中:3 / 2 = 1.5
网友评论