public int firstBadVersion(int n) {
if(n==2){
if(isBadVersion(2)&&!isBadVersion(1)){
return 2;
}else{
return 1;
}
}
int startIndex=n/2;
while(!(isBadVersion(startIndex)&&!isBadVersion(startIndex-1))){
if(isBadVersion(startIndex)){
startIndex=startIndex/2;
continue;
}
if(!isBadVersion(startIndex))
startIndex=startIndex+(n-startIndex)/2;
if(startIndex==n-1){
if(isBadVersion(startIndex)&&!isBadVersion(startIndex-1)){
return startIndex;
}else if(!isBadVersion(startIndex)&&isBadVersion(startIndex+1)){
return startIndex+1;
}else{
return 0;
}
}
}
return startIndex;
}