LintCode 74 第一个错误的代码版本

xiaoxiao2021-02-28  103

题目:findFirstBadVersion


要求:

代码库的版本号是从 1 到 n 的整数。某一天,有人提交了错误版本的代码,因此造成自身及之后版本的代码在单元测试中均出错。请找出第一个错误的版本号。 你可以通过 isBadVersion 的接口来判断版本号 version 是否在单元测试中出错,具体接口详情和调用方法请见代码的注释部分。

样例:

给出 n=5 调用isBadVersion(3),得到false 调用isBadVersion(5),得到true 调用isBadVersion(4),得到true 此时我们可以断定4是第一个错误的版本号

算法要求:

调用 isBadVersion 的次数越少越好

解题思路:

直接上二分查找即可。

算法如下:

int findFirstBadVersion(int n) { // write your code here if (n <= 0) { return 0; } long long left = 0; long long right = n - 1; long long mid = (left + right) / 2; while (left <= right) { bool flag2 = SVNRepo::isBadVersion(mid); if (flag2) { right = mid - 1; mid = (left + right) / 2; } else { left = mid + 1; mid = (left + right) / 2; } } return (int)left; }
转载请注明原文地址: https://www.6miu.com/read-61279.html

最新回复(0)