思路:
- 利用二分查找的思想,如果中间的是坏的,则在前半段找(包括中间这点)。否则,从[中间加一,n]这个区间找。
- 中间点计算为了防止相加溢出,采用mid = first+(last-first)/2。
int firstBadVersion(int n) {
int first = 1;
int last = n;
while(first<last)
{
if (isBadVersion(first+(last-first)/2)==false)
{
first =first+(last-first)/2+1;
}
else
{
last = first+(last-first)/2;
}
}
return first;
}