二分
- 中间值大于右端值,在右区间i=m+1;
- 中间值小于右端值,在左区间j=m;
- 中间值等于右端值,缩小区间,j--;
int i = 0, j = rotateArray.size() - 1;
while (i < j) {
int m = i + ((j - i) >> 1);
if (rotateArray[m] > rotateArray[j]) {
i = m + 1;
}
else if (rotateArray[m] < rotateArray[j]) {
j = m;
}
else {
j -= 1;
}
}
return rotateArray[i];