题目

image.png

思路

题目可以理解为数组中第一次出现的数字。
二分查找

代码

  1. # The isBadVersion API is already defined for you.
  2. # @param version, an integer
  3. # @return an integer
  4. # def isBadVersion(version):
  5. class Solution:
  6. def firstBadVersion(self, n):
  7. """
  8. :type n: int
  9. :rtype: int
  10. """
  11. left, right = 0, n
  12. while left + 1 < right:
  13. mid = left + (right - left) // 2
  14. if isBadVersion(mid):
  15. # 是坏的,第一次出现坏的在左半部分
  16. right = mid
  17. else:
  18. # 是好的,坏的在右半部分,去右半部分查找
  19. left = mid + 1
  20. return left if isBadVersion(left) else right