山峰元素是指其值大于或等于左右相邻值的元素。给定一个输入数组nums,任意两个相邻元素值不相等,数组可能包含多个山峰。找到索引最大的那个山峰元素并返回其索引。假设nums[-1]=nums[三=o。使用Python程序语言
时间: 2024-06-12 10:11:10 浏览: 136
python如何获得list或numpy数组中最大元素对应的索引
山峰元素是指其值大于或等于左右相邻值的元素。给定一个输入数组nums,任意两个相邻元素值不相等,数组可能包含多个山峰。为了找到索引最大的那个山峰元素并返回其索引,我们可以使用二分查找算法。具体步骤如下:
1. 定义左右指针left和right,分别指向数组的第一个和最后一个元素。
2. 在while循环中,计算中间元素mid的索引,如果mid满足山峰元素的条件,则返回mid。
3. 如果mid不满足山峰元素的条件,则判断mid左边和右边的元素大小,如果左边的元素比右边的元素大,则在左半边继续查找,否则在右半边继续查找。
4. 如果left和right相遇,则返回left或right的值。
下面是Python代码实现:
def findPeakElement(nums):
left, right = 0, len(nums) - 1
while left < right:
mid = (left + right) // 2
if nums[mid] > nums[mid + 1]:
right = mid
else:
left = mid + 1
return left
# 测试
nums = [1, 2, 3, 1]
print(findPeakElement(nums)) # 输出:2
阅读全文