最后更新于3年前
题目简化为一个布尔值序列:[f, f, f, ..., t, t, t],求第一个t出现的位置,即f和t的右分界。 用二分法,初始left=1,right=n,先求中点mid,易推知当V(mid)==false,说明mid在f区间,要找中点应向右扩展:left=mid+1。反之向左扩展
class Solution: def firstBadVersion(self, n): """ :type n: int :rtype: int """ left = 1 right = n while left <= right: mid = left + (right - left) // 2 if isBadVersion(mid): #题目提供函数 right = mid - 1 else: left = mid + 1 return left