我试图找出一个数字是否是一个完美的正方形。我有一个简单的二进制搜索算法来做到这一点,最终进入无限循环。我似乎无法找到解决方法。有人可以帮我这个。
def isPerfectSquare(self, num):
"""
:type num: int
:rtype: bool
"""
if num < 1:
return False
start, end = 1, num
while start <= end:
mid = (end - start)//2
if mid * mid == num:
return True
elif mid * mid < num:
start = mid + 1
else:
end = mid
return False
答案 0 :(得分:0)
mid = (end - start)//2
因为我们实际上想要一个正中半部分,所以代码将是,
mid = start + (end - start) // 2
这解决了它。