--- tags: data_structure_python --- # First Bad Version <img src="https://img.shields.io/badge/-easy-brightgreen"> You are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check. Since each version is developed based on the previous version, all the versions after a bad version are also bad. Suppose you have ```n``` versions ```[1, 2, ..., n]``` and you want to find out the first bad one, which causes all the following ones to be bad. You are given an API bool ```isBadVersion(version)``` which will return whether ```version``` is bad. Implement a function to find the first bad version. You should minimize the number of calls to the API. **Example:** ``` Given n = 5, and version = 4 is the first bad version. call isBadVersion(3) -> false call isBadVersion(5) -> true call isBadVersion(4) -> true Then 4 is the first bad version. ``` # Solution ```python= # The isBadVersion API is already defined for you. # @param version, an integer # @return a bool # def isBadVersion(version): class Solution: def firstBadVersion(self, n): """ :type n: int :rtype: int """ l = 1 r = n while l < r: mid = l + (r - l)// 2 if isBadVersion(mid): r= mid else: l = mid+1 return l ```