class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型
*/
int findPeakElement(vector<int>& nums) {
// write code here
int n = nums.size();
nums.emplace_back(1-1e9);
// int ans = 0;
int left = 0, right = n-1;
// 由于没有相邻相等的情况,且边界为波谷负无穷,
// 因此:一直往高处走,lr 汇合处是波峰。
while (left < right) {
int mid = (left+right) >> 1;
if (nums[mid] > nums[mid+1]) {
right = mid;
} else {
left = mid+1; // < 意味着不是波峰,不属于最终答案,因此+1 排除这项,否则会死循环。
}
}
return left;
}
};

京公网安备 11010502036488号