题意:给定一个数组,找出第一个时错误的版本序号,结果一定存在
思路:对数组进行二分查找,开始设定起始s和终止e
- 中间的值是正确的版本,更新s为m+1
- 中间的值是错误的版本,更新e为m-1
- 退出条件为s<e
- 退出后的s如果是正确的版本那么,返回s+1,否则返回s,因为结果一定存在
思想:二分查找
复杂度:时间O(logn),空间O(1)
public class Solution extends VersionControl {
public int firstBadVersion(int n) {
int s = 1;
int e = n;
while(s<e) {
int m = s + (e-s)/2;
boolean res = isBadVersion(m);
if(res) {
e = m - 1;
} else {
s = m + 1;
}
}
boolean temp = isBadVersion(s);
if(temp)
return s;
else
return s+1;
}
}
网友评论