题目:
峰值元素是指其值大于左右相邻值的元素。
给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。
数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。
你可以假设 nums[-1] = nums[n] = -∞。
说明:
你的解法应该是 O(logN) 时间复杂度的。
思路:
二分法
/**
* 二分查找
* @param nums
* @return
*/
public int findPeakElement(int[] nums) {
if(nums.length==0){
return -1;
}
int low = 0;
int high = nums.length - 1;
while (low < high) {
int mid1 = (low + high) / 2;
if (nums[mid1] < nums[mid1+1]) {
low = mid1 + 1;
} else {
high = mid1;
}
}
return low;
}