# The isBadVersion API is already defined for you.
# @param version, an integer
# @return an integer
# def isBadVersion(version):

class Solution:
    
    def find_bad_version(self,n, start,end):
        if n==1 or n==0:
            return n
        mid = mid = (end - start)//2 + start
        mid_bad_version = isBadVersion(mid)
        pre_bad_version = isBadVersion(mid-1)
        
        if mid_bad_version is True and pre_bad_version is False:
            return mid
        elif mid_bad_version is False and pre_bad_version is False:
            start = mid+1
            return self.find_bad_version(n, start,end)
        elif mid_bad_version is True and pre_bad_version is True:
            end = mid-1
            return self.find_bad_version(n, start,end)
            
        
    def firstBadVersion(self, n):
        """
        :type n: int
        :rtype: int
        """
        return self.find_bad_version(n,start=1,end=n)
        
        
Comments (0)