zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    ztree学习---将默认勾选的展开
    CentOS之RPM
    CentOS之文档的压缩与打包
    CentOS之Vim
    CentOS用户和用户组管理
    Linux CentOS更改文件的权限
    CentOS的文件属性:命令 ls -l
    CentOS命令
    Java解析excel
    easyUI的combotree的树的懒加载。
  • 原文地址:https://www.cnblogs.com/xxswkl/p/12353364.html
Copyright © 2011-2022 走看看