第一个错误的版本
概述:你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, ..., n] ,你想找出导致之后所有版本出错的第一个错误的版本。
输入:n = 5, bad = 4
输出:4
输入:n = 1, bad = 1
输出:1
方法一:二分查找
思路:二分查找适用于单一目标,依次减少区间范围,判断返回即可。
# 二分查找
# 二分查找适用于单一目标,依次减少区间范围,判断返回即可。
class Solution:
def firstBadVersion(self, n: int) -> int:
left, right = 1, n
while left < right:
mid = left + (right - left) // 2
if isBadVersion(mid):
right = mid
else:
left = mid + 1
return left