1 题目
2 思路
- 考点:二分,
pair
3 代码
class Solution {
public:
int findPeakElement(vector<int>& nums) {
int n = nums.size();
if(n == 1) return 0;
auto get = [&](int i) ->pair<int, int>{
if(i == -1 || i == n) return {0, 0};
else return {1, nums[i]};
};
int l = 0, r = n - 1;
int ans = -1;
while(l <= r){
int mid = (l + r) /2;
if(get(mid) > get(mid - 1) && get(mid) > get(mid + 1)){
ans = mid;
break;
}else if(get(mid - 1) > get(mid)){
r = mid - 1;
}else{
l = mid + 1;
}
}
return ans;
}
};
/**
if (get(mid) < get(mid + 1)) {
left = mid + 1;
}
else {
right = mid - 1;
}
**/