题解 | #寻找峰值#
寻找峰值
https://www.nowcoder.com/practice/fcf87540c4f347bcb4cf720b5b350c76
#include <algorithm>
#include <vector>
class Solution {
public:
int findPeakElement(vector<int>& nums) {
int n = nums.size();
if(n == 1) return 0;
if(n == 0) return -1;
if(nums[0] > nums[1] ) return 0;
if(nums[n-1] > nums[n -2]) return n -1; //所以如果是两个数的话,一定会退出,并且当两端出现局部大的元素时,也会直接返回
for(int i = 1, j = n -2; i <= j; i++,j--){//因为两端的元素已经检查过了,所以都从第二个出发
if((nums[i] > nums[i - 1] && nums[i] > nums[i + 1] ))
return i;
if(nums[j] > nums[j -1] && nums[j] > nums[j + 1])return j;
}
return 0;
}
};
