题目
峰值元素是指其值严格大于左右相邻值的元素。
给你一个整数数组
nums
,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设
nums[-1] = nums[n] = -∞
。你必须实现时间复杂度为
O(log n)
的算法来解决此问题。
解题思路
- 以较大的值为基准寻找另一侧的值;
- 因为左右的边界默认为负无穷,所以在较大值的另一侧一定存在峰值。
代码展示
class Solution {public int findPeakElement(int[] nums) {int left = 0; int right = nums.length - 1;while (left < right) {int mid = (left + right) / 2;if(nums[mid] > nums[mid + 1]){right = mid;} else {left = mid + 1;}}return right;}
}