# leetcode162. Find Peak Element (O(lgn)复杂度寻找峰值)

Posted by 111qqz on Friday, April 14, 2017

## TOC

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[n] = -∞`.

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

click to show spoilers.

**Note:**Your solution should be in logarithmic complexity.

``````/* ***********************************************
Author :111qqz
Created Time :2017年04月14日 星期五 20时15分01秒
File Name :162.cpp
************************************************ */
class Solution {

public:

int findPeakElement(vector<int>& nums) {
int n = nums.size();
int l = 0 ;
int r = n-1;
while (l<=r)
{
if (l==r) return l;
int mid = (l+r)>>1;
if (nums[mid]<nums[mid+1])
l = mid + 1;
else r = mid;
}

}

};
``````