您的位置:首页 > 职场人生

九章算法面试题53 第一个出错的代码版本

2015-05-13 01:53 141 查看

九章算法官网-原文网址

http://www.jiuzhang.com/problem/53/

题目

在早期的svn代码控制器中,代码版本的编号是从1开始累加的。有一天你提交了一个带BUG的代码到代码库中,使得这个版本上的单元测试(Unit Tests)失败了。而正不巧由于为此代码库贡献代码的每个人的工作都比较独立,你又休假去了,于是没有人去修复这个bug,这导致了从某个版本开始,后面的每个版本的单元测试都无法通过。假如说现在的代码版本号已经到了n。请找出第一个出错的代码版本(也就是你提交的那个有BUG的版本)。

你可以调用一个函数isBadVersion(id)去测试版本号id是否是一个可以通过Unit Tests的好版本。你的算法应该尽量少的调用isBadVersion这个函数。

在线测试本题

http://lintcode.com/problem/first-bad-version/

解答

采用简单的二分法可以解决。
Python 代码:
start, end = 1, n
while start + 1 < end:
mid = (start + end) / 2
if isBadVersion(mid):
end = mid
else:
start = mid + 1
if isBadVersion(start):
return start
return end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: