二分法求极大值,居然一边ac,少有的感觉
class Solution {
public:
int findPeakElement(vector<int>& nums) {
int n = nums.size();
if(n == 0) return INT_MIN;
if(n == 1) return 0;
if(nums[0] > nums[1]) return 0;
if(nums[n - 1] > nums[n - 2]) return n - 1;
int peak;
int i = 0, j = n - 1;
while(i < j){
int mid = i + (j - i) / 2;
if(nums[mid] > nums[mid - 1] && nums[mid] > nums[mid + 1])
return mid;
if(nums[mid] < nums[j]){
i = mid;
} else if(nums[mid] < nums[i]){
j = mid;
} else {
if(nums[mid - 1] > nums[mid])
j = mid;
else
i = mid;
}
}
return i;
}
};