LeetCode0278.FirstBadVersion第一个错误的版本【Easy】【Python】【二分】问题LeetCode你是一名产品经理,目前正在带领团队开发一个新产品。不幸的是,您的产品的最新版本未通过质量检查。由于每个版本都是在前一个版本的基础上开发的,所以一个坏版本之后的所有版本也是坏的。假设你有n个版本[1,2,...,n],你想找出第一个坏的,哪个导致以下所有错误。您将获得一个APIboolisBadVersion(version),它将返回版本是否错误。实现一个函数来查找第一个错误的版本。您应该尽量减少对API的调用次数。示例:给定n=5,并且版本=4是第一个错误版本。调用isBadVersion(3)->falsecallisBadVersion(5)->truecallisBadVersion(4)->trueThen4是第一个坏版本。问题力扣你是产品经理,目前正带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是在上一个版本的基础上开发的,所以错误版本之后的所有版本都是错误的。假设你有n个版本[1,2,...,n]并且你想找到导致所有后续版本失败的第一个错误版本。单元测试中可以调用boolisBadVersion(version)接口判断版本号version是否出错。实现一个函数来查找第一个错误的版本。您应该尽量减少对API的调用次数。示例:给定n=5,version=4是第一个错误的版本。调用isBadVersion(3)->false调用isBadVersion(5)->true调用isBadVersion(4)->true因此,4是第一个错误版本。思路二分查找因为版本是从1到n,所以low的初始值设置为1,high的初始值设置为n。时间复杂度:O(logn)空间复杂度:O(1)Python代码#isBadVersionAPI已经为你定义好。#@paramversion,aninteger#@returnabool#defisBadVersion(version):classSolution(object):deffirstBadVersion(self,n):""":typen:int:rtype:int"""low,high=1,n#1-nwhilelow<=high:mid=int((low+high)/2)ifisBadVersion(mid)==False:low=mid+1else:high=mid-1返回低代码地址GitHub链接
