162. Find Peak Element

Posted warmland

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了162. Find Peak Element相关的知识,希望对你有一定的参考价值。

这道题基于的特质是,如果是一个递减序列,那么左起第一个数就是peak element,如果是递增数列,那么右侧第一个是

所以可以使用二分搜索,如果一个mid本身并不是peak element,那么它如果比右侧大的话,那么说明左侧(包括它自己)一定有一个最优解,否则右侧(不包括它自己)一定有一个最优解。

 

 1     public int findPeakElement(int[] nums) {
 2         if(nums.length == 0) {
 3             return -1;
 4         }
 5         int left = 0; 
 6         int right = nums.length - 1;
 7         while(left <= right) {
 8             if(left == right) {
 9                 return left;
10             }
11             int mid = left + (right - left) / 2;
12             if(nums[mid] > nums[mid + 1]) {
13                 right = mid;
14             } else {
15                 left = mid + 1;
16             }
17         }
18         return left;
19     }

 

以上是关于162. Find Peak Element的主要内容,如果未能解决你的问题,请参考以下文章

LC.162.Find Peak Element

162. Find Peak Element

[Leetcode]162. Find Peak Element

162. Find Peak Element

162. Find Peak Element

162. Find Peak Element