山峰元素是指其值大于或等于左右相邻值的元素,给定一个输入数组nums,任意两个相邻元素值不相等,数组可能包含多个山峰。找到索引最大的那个山峰元素并返回其索引
时间: 2024-10-08 14:12:20 浏览: 32
js代码-给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
在给定的数组 `nums` 中,"山峰元素"(Peak Element)指的是一个数值,它的左侧所有元素都小于它,右侧所有元素都大于它。这个问题需要找出这样的峰值元素中索引最大的一项。为了找到这个元素,我们可以遍历数组,对于每个位置 i:
1. 如果 i 是第一个元素(即 i = 0 或 nums[i-1] < nums[i]),那么 nums[i] 可能是一个峰值,设置当前最大峰值索引为 i。
2. 接下来,检查 i+1 到数组结尾的元素,如果发现有 nums[j] > nums[i],说明之前的峰值消失了,更新最大峰值索引。
3. 当遍历到数组末尾,nums[i] 仍然是最大峰值,则返回 i。
以下是算法的伪代码示例:
```python
def peakIndexInMountainArray(nums):
if not nums:
return -1
left_max = 0
for i in range(1, len(nums)):
if nums[i] > nums[left_max]:
left_max = i
right_min = len(nums) - 1
for i in reversed(range(left_max + 1, len(nums))):
if nums[i] < nums[right_min]:
right_min = i
return left_max if nums[left_max] >= nums[right_min] else right_min
```
阅读全文