峰值元素是指其值大于左右相邻值的元素。
给定一个输入数组,其中 num[i] ≠ num[i+1],找到峰值元素并返回其索引。
数组可能包含多个峰值,在这种情况下,返回到任何一个峰值所在位置都可以。
你可以想象得到 num[-1] = num[n] = -∞。
例如,在数组 [1, 2, 3, 1]中 3 是峰值元素您的函数应该返回索引号2。
注意:
你的解决方案应该是对数复杂度的。
详见:https://leetcode.com/problems/find-peak-element/description/
Java实现:
class Solution { public int findPeakElement(int[] nums) { int n=nums.length; if(n==0){ return -1; } int left=0; int right=n-1; while(left<right){ int mid=(left+right)>>1; if(nums[mid]<nums[mid+1]){ left=mid+1; }else{ right=mid; } } return right; } }