这道题很简单,采用二分类即可,具体代码如下:
// Forward declaration of isBadVersion API.
bool isBadVersion(int version);
class Solution
{
public:
int firstBadVersion(int n)
{
if (n == 0)
return 0;
if (n == 1 || isBadVersion(1))
return 1;
if (n == 2)
{
if (isBadVersion(1))
return 1;
else
return 2;
}
long long first = 1;
long long second(n);
long long tmp = (first + second)/2;
while (true)
{
if (tmp - first == 1)
{
if (isBadVersion(first))
return first;
if (isBadVersion(tmp))
return tmp;
}
if (second - tmp == 1)
{
return second;
}
if (isBadVersion(tmp))
{
second = tmp;
tmp = (first + second)/2;
}
else
{
first = tmp;
tmp = (first + second)/2;
}
}
return 0;
}
};