Python中的第一个错误版本

假设在一家公司中,一位产品经理带领一个团队开发新产品。假设最新版本未通过质量检查。由于每个版本都是基于先前版本开发的,因此错误版本之后的所有版本都是错误的。因此,我们有一个包含n个元素[1、2,...,n]的数组A,我们必须从该数组中找到第一个错误的版本。

考虑我们有一个函数isBadVersion(version_id),它将返回版本是否正确。例如,假设n = 5,version = 4是第一个错误版本。因此,如果isBadVersion(3)返回false isBadVersion(5)返回true,而isBadVersion(4)也返回true,则第一个错误的版本是4

为了解决这个问题,我们将遵循以下步骤-

  • 当n <2时,返回n

  • 使用给定功能执行二进制搜索方法以检测错误版本。

示例

让我们看下面的实现以更好地理解-

first_bad = 0
def isBadVersion(version):
   if version >= first_bad:
      return True
   return False
class Solution:
   def firstBadVersion(self, n):
      if n <2:
         return n
      start = 1
      end = n
      while(start<=end):
         mid = (start+end)//2
         if isBadVersion(mid) and not isBadVersion(mid-1):
            return mid
         elif isBadVersion(mid-1):
            end = mid-1
         else:
            start = mid+1
ob1 = Solution()first_bad = 4
op = ob1.firstBadVersion(5)
print(op)

输入项

5
4

输出结果

4