【LEETCODE】278-First Bad Version

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.

Credits:

Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.


题意:

给 n 个version [1, 2, ..., n] ,最新的version是坏的,要找到最开始坏的那个version

用API去检查version是否坏掉,目标是最少次数调用此API以找到最开始坏的version


思路:

相当于最少次数的查找某个元素

二分法


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

class Solution(object):
    def firstBadVersion(self, n):
        """
        :type n: int
        :rtype: int
        """
        if not isBadVersion(n):
            return None
        
        low=1
        high=n
        
        while low<=high:                #need =
        
            index=int((low+high)/2)
        
            if isBadVersion(index):
                high=index-1            #not index
            else:
                low=index+1             #not index
        
        return low                      #not index


你可能感兴趣的:(LeetCode,python)