有一个产品发布了多个版本。它遵循一下规则:假如某个版本崩溃了,则后面的所有版本都会崩溃。
举一个例子:一个产品假如有5个版本,其中1~3版本都是正常的,但是第4个版本崩溃了,那么第5个版本(最新版本)一定也奔溃。第4个版本被称为第一个崩溃的版本。
现在已知一个产品有n个版本,而且有一个检查算法func isBadVersion( _ version : Int) -> Bool 可以判断一个版本是否崩溃。假如这个产品的最新版本崩溃了,求第一个崩溃的版本。
func minBadVersion(low : Int, high : Int , _ arr : [Int]) -> Int {
guard low < high else{
return low
}
let mid = (low + high) / 2
if isBadVersion(arr[mid]){
return minBadVersion(low: low, high: mid, arr)
}else{
return minBadVersion(low: mid + 1, high: high, arr)
}
}
func isBadVersion(_ version : Int) -> Bool{
if (version >= 10){
return true
}else{
return false
}
}
let arr = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
print(minBadVersion(low: 0, high: arr.count - 1, arr))