问题描述
给定一个正整数 n
,表示有 n
个版本,版本是连续的,从其中某个版本开始后面的版本都是有问题的,可以通过调用函数 bool isBadVersion(version)
来判断版本是好的还是坏的,要求尽量少的调用此函数,找出第一个坏的版本。题目链接:点我
样例输入输出
输入:n = 5, bad = 4
输出:4
解释:
调用 isBadVersion(3) -> false
调用 isBadVersion(5) -> true
调用 isBadVersion(4) -> true
所以 4 是第一个坏的版本
输入:n = 1, bad = 1
输出:1
问题解法
此题要求尽量少的调用 isBadVersion
函数,因此不能直接从头开始一个个查找,因为有特性 ”从某个版本坏了之后后面的版本都是坏的“,因此可以使用二分查找快速缩小范围,找到第一个坏的版本。代码如下
1 | /* The isBadVersion API is defined in the parent class VersionControl. |