码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-05-13 10:29:48      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:二分法   leetcode   九章算法   lintcode   面试题   

九章算法官网-原文网址


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

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

标签:二分法   leetcode   九章算法   lintcode   面试题   

原文地址:http://blog.csdn.net/jiuzhang_ninechapter/article/details/45680681

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!