您的位置:首页 > 编程语言

lintcode :First bad version 第一个错误的代码版本

2016-01-13 21:39 585 查看
题目

第一个错误的代码版本

代码库的版本号是从 1 到 n 的整数。某一天,有人提交了错误版本的代码,因此造成自身及之后版本的代码在单元测试中均出错。请找出第一个错误的版本号。

你可以通过
isBadVersion
的接口来判断版本号 version 是否在单元测试中出错,具体接口详情和调用方法请见代码的注释部分。

样例

给出
n=5


调用
isBadVersion(3)
,得到
false


调用
isBadVersion(5)
,得到
true


调用
isBadVersion(4)
,得到
true


此时我们可以断定
4
是第一个错误的版本号

注意

请阅读上述代码,对于不同的语言获取正确的调用 isBadVersion 的方法,比如java的调用方式是SVNRepo
.isBadVersion


挑战

调用 isBadVersion 的次数越少越好

解题

感觉顺序遍历,找到第一个出现true的就是答案了,但是超时了。只有二分查找了

#class SVNRepo:
#    @classmethod
#    def isBadVersion(cls, id)
#        # Run unit tests to check whether verison `id` is a bad version
#        # return true if unit tests passed else false.
# You can use SVNRepo.isBadVersion(10) to check whether version 10 is a
# bad version.
class Solution:
"""
@param n: An integers.
@return: An integer which is the first bad version.
"""
def findFirstBadVersion(self, n):
# write your code here
if n<=0:return 0
if n==1:return 1
l = 1
r = n
while l< r:
m = (l + r)/2
if SVNRepo.isBadVersion(m):
r = m
else:
l = m + 1
return r


Python Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: