类似二分。
class Solution {
public:
int findPeakElement(const vector<int> &num) {
int size = num.size();
int left = 0;
int right = size - 1;
while (left <= right) {
int mid = (left + right) / 2;
if ((mid == 0 || num[mid] > num[mid-1]) &&
(mid == size - 1 || num[mid] > num[mid+1])) {
return mid;
}
if (mid != 0 && num[mid] < num[mid-1]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
};
原文:http://www.cnblogs.com/lautsie/p/4196783.html