山峰元素是指其值大于或等于左右相邻值的元素,给定一个输入数组nums,任意两个相邻元素值不相等,数组可能包含多个山峰。找到索引最大的那个山峰元素并返回其索引。
时间: 2024-10-08 09:13:59 浏览: 24
js代码-给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
在给定的数组`nums`中,寻找“山峰”元素意味着我们需要找到这样一个位置i,满足三个条件:i是数组的一个元素,i-1(左邻元素)小于i,同时i+1(右邻元素)也小于i。这样的元素就像一个山顶,周围比它小。我们从数组的一端开始遍历,逐个检查每个元素是否满足山峰条件,并记录下最后一个符合条件的位置,即最大的山峰元素的索引。
例如,对于数组[9, 8, 7, 6, 5, 4, 3, 2, 1],最大山峰元素9的索引是0,因为在其左侧没有更大的数,而右侧的8小于9。
寻找这个最大山峰元素的算法通常涉及一次遍历,时间复杂度是O(n),其中n是数组长度。以下是Python的一个简单示例:
```python
def findPeakElement(nums):
left = 0
right = len(nums) - 1
while left < right:
mid = (left + right) // 2
if nums[mid] > nums[mid + 1]: # 如果中间元素比右边大,说明峰值可能在左半部分
right = mid
else: # 否则,在右半部分查找
left = mid + 1
return left if nums[left] > nums[left - 1] else left - 1 # 返回最大山峰的索引
# 示例:
nums = [1, 2, 3, 1]
result = findPeakElement(nums)
```
阅读全文