您的位置:首页 > 其它

leetCode - 162 - Find Peak Element

2017-08-09 18:38 351 查看
A peak element is an element that is greater than its neighbors.

Given an input array where 
num[i] ≠ num[i+1]
, find a peak element and return its index.

The array may contain multiple peaks, in that case return the index to any one of the peaks is fine.

You may imagine that 
num[-1] = num
= -∞
.

For example, in array 
[1, 2, 3, 1]
, 3 is a peak element and your function should return
the index number 2.

嗯,找一个数组的峰值(该位置比两侧数都大)

一开始写了个O(n)的做法,然后觉得可以三分,三分写了写又觉得奇怪,最后还是二分了。时间复杂度O(logn),空间复杂度O(1)

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