leetcode 162. Find Peak Element

A peak element is an element that is greater than its neighbors.
Given an input array nums, where nums[i] ≠ nums[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 nums[-1] = nums[n] = -∞.
Example :
Input: nums = [1,2,3,1]
Output: 2
Explanation: 3 is a peak return the index number 2.
方案:O(logn)。
类似二分,中间元素array[mid],
如果array[mid]>array[mid-1]且array[mid]>array[mid+1]
则array[mid]就是peak element
如果array[mid-1]大于array[mid]
则array[0..mid-1]肯定有peak element
如果array[mid+1]大于array[mid]
则array[mid+1..end]肯定有peak element。
说明:array[mid-1]大于array[mid],则array[0..mid-1]肯定有peak element
      如果array[mid-1]大于array[mid-2],array[mid-1]就是peak element
      要是array[mid-1]小于array[mid-2],再比较array[mid-2]与array[mid-3]
      ........
      一直迭代array[1]和array[0],
      array[1]>array[0]则array[1]是peak element,
      否则array[0]是peak element。

猜你喜欢

转载自blog.csdn.net/acttell/article/details/80879432
今日推荐