【LeetCode】162. 寻找峰值(Java)

    科技2025-07-14  16

    峰值元素是指其值大于左右相邻值的元素。

    给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。

    数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。

    你可以假设 nums[-1] = nums[n] = -∞。

    说明:

    你的解法应该是 O(logN) 时间复杂度的。(即不能单纯的遍历数组,基本就是二分了)

    class Solution { public int findPeakElement(int[] nums) { //nums[-1] = nums[n] = -∞ //按照题意的假设,我们可以知道,最左和最右还有中间的某个点同样高,即不会一直往上或一直往下 //所以用二分查找,比较中间值的左右,往比中间值大的那边缩减区间,一直循环,必定有回落的点 int left = 0, right = nums.length - 1; while (left < right) { int mid = left + (right - left) / 2; if (nums[mid] > nums[mid + 1]) { right = mid; } else { left = mid + 1; } } return left; } }

    Processed: 0.010, SQL: 8