您的位置:首页 > 其它

leetcode-find peak element

2014-12-06 09:12 495 查看
和best time to buy and sell stock中的某个题类似。
思路很简单:在Binary Search上略加修改。规则是:只要mid比其左邻居小,那说明左半段必然存在peak,只访问左半段即可;否则,右半段必然存在peak。需要注意的是,两端也可以是peak。

class Solution {
public:
int findPeakElement(const vector<int> &num) {
int n=num.size();
int left=0,right=n-1;
while(left<=right)
{
int mid=left+(right-left)/2;
if((mid==0||num[mid]>num[mid-1])&&(mid==n-1||num[mid]>num[mid+1]))
return mid;
if(mid>0&&num[mid-1]>num[mid])//mid>0不要忘记
right=mid-1;
else left=mid+1;
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: