题意是返回任意一个peak element 都可以
顺序查找
class Solution {
public:
int findPeakElement(vector<int>& nums) {
int n=nums.size();
if(n<=1)
return 0;
int i;
if(nums[0]>nums[1])
return 0;
for(i=1;i<n-1;i++)
{
if(nums[i]>nums[i-1]&&nums[i]>nums[i+1])
return i;
}
if(nums[n-1]>nums[n-2])
return n-1;
return 0;
}
};
二分迭代
class Solution {
public:
int findPeakElement(vector<int>& nums) {
int n=nums.size();
if(n<=1)
return 0;
int l=0,h=n-1;
while(l<h)
{
int mid=(l+h)>>1;
if(nums[mid]<nums[mid+1])
l=mid+1;
else
h=mid;
}
return l;
}
};