当有多个峰值时,可以使用二分查找的方法在数组中找到峰值元素。
具体步骤如下:
- 初始化左指针left为0,右指针right为数组长度减1。
- 进入循环,直到左指针等于右指针:
- 计算中间位置mid = (left + right) / 2。
- 如果中间位置mid处的元素大于其相邻元素(即nums[mid] > nums[mid+1]),则mid处的元素为峰值,返回nums[mid]。
- 如果中间位置mid处的元素小于其相邻元素(即nums[mid] < nums[mid+1]),则峰值一定在mid+1到right之间,更新左指针left = mid + 1。
- 如果中间位置mid处的元素小于其相邻元素(即nums[mid] < nums[mid-1]),则峰值一定在left到mid-1之间,更新右指针right = mid - 1。
这种方法的时间复杂度为O(logn),其中n为数组的长度。
推荐的腾讯云相关产品:无
参考链接: