162 Find Peak Element

題目:
https://leetcode.com/problems/find-peak-element/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
public:
int findPeakElement(vector<int>& nums) {
if (nums.size() == 1) return 0;
int n = nums.size();
if(nums[0] > nums[1]) return 0;
if(nums[n-1] > nums[n-2]) return n-1;
int l = 1, r = n-2, m = -1, ans = -1;
while(l <= r){
m = l + ((r-l) >> 1);
if(nums[m] < nums[m-1]){
r = m-1;
}
else if(nums[m] < nums[m+1]){
l = m+1;
}
else{
ans = m;
break;
}
}
return ans;
}
};