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的主要内容,如果未能解决你的问题,请参考以下文章