#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; } };