278. 第一个错误的版本
假设有 n 个版本 [1, 2, …, n],想找出导致之后所有版本出错的第一个错误的版本。
可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。应该尽量减少对调用 API 的次数。
示例:
给定 n = 5,并且 version = 4 是第一个错误的版本。
调用 isBadVersion(3) -> false
调用 isBadVersion(5) -> true
调用 isBadVersion(4) -> true
所以,4 是第一个错误的版本。
func firstBadVersion(n int) int {
//设置左右索引值
left,right := 1, n
//进行循环
for left<right{
//更新中间值
mid := left+(right-left)/2
//判断是否是错误版本,如果是则更新右索引值
if isBadVersion(mid) {
right=mid
//判断如果为正确版本,则更新左索引
}else{
left=mid+1
}
}
//最终左右索引值相等
return left
}