278第一个错误的版本

题目:你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。
链接:https://leetcode-cn.com/problems/first-bad-version

法一:自己的代码

思路:注意isBadVersion()函数如果是次品返回True,这里相当与寻找左侧端点,

# The isBadVersion API is already defined for you.
# @param version, an integer
# @return a bool
def isBadVersion(version):
    return True if version >= 4 else False
class Solution:
    def firstBadVersion(self, n):
        """
        :type n: int
        :rtype: int
        """
        left = 0
        right = n
        while left < right:
            mid = (left + right) >> 1
            # 如果是次品,则返回True,说明搜索目标在它前面,
            if isBadVersion(mid+1):
                right = mid
            else:
                left = mid + 1
        # 当left等于right时,right一定是次品,所以left即第一个次品
        # 但因为实际序号比索引大一,索引返回left+1
        return left+1
if __name__ == '__main__':
    solution = Solution()
    result = solution.firstBadVersion(10)
    print(result)
View Code

ttt

posted on 2020-02-23 19:25  吃我一枪  阅读(98)  评论(0编辑  收藏  举报

导航