剑指OFFER 11
这是一题二分查找,但是在实现有一些小技巧
当number[mid]<number[high]时,high=mid;
当number[mid]>number[high]时,left=mid+1;
但是相等时,high–;从而向左依次缩小范围,最后number[low]即为所求
class Solution {
public:
int minArray(vector<int>& numbers) {
int low = 0;
int high = numbers.size() - 1;
while (low < high) {
int pivot = low + (high - low) / 2;
if (numbers[pivot] < numbers[high]) {
high = pivot;
}
else if (numbers[pivot] > numbers[high]) {
low = pivot + 1;
}
else {
high -= 1;
}
}
return numbers[low];
}
};