📅  最后修改于: 2023-12-03 14:58:25.744000             🧑  作者: Mango
给定一个函数isBadVersion(version),该函数返回一个版本号是否正确,如果版本错误,则isBadVersion(k)将返回True,其中k是错误版本的第一个整数。
实现一个算法来查找第一个错误版本。您可以假设所有版本都是按顺序排序的,第一个错误版本必须存在。
请实现以下函数:
def firstBadVersion(n):
"""
:type n: int
:rtype: int
"""
def firstBadVersion(n):
"""
:type n: int
:rtype: int
"""
left, right = 1, n
while left < right:
mid = (left + right) // 2
if isBadVersion(mid):
right = mid
else:
left = mid + 1
return left
这是一道二分查找的问题,应用经典的二分查找算法解决,需要注意的地方是:
left
等于right
的时候停止(一定是错误版本)。left
为所求。时间复杂度为O(logn)。