📅  最后修改于: 2023-12-03 15:10:46.430000             🧑  作者: Mango
峰值定义: 数组中的峰值是指其左右的值都小于它的元素。
思路: 可以使用二分查找来找到峰值,因为峰值的左右两边一定不是单调递增或递减的。需要注意的是,当mid位置的值不是峰值时,判断它左边还是右边有可能存在峰值,因为峰值存在于任何非单调递增或递减序列中。
代码实现:
def find_peak_index(nums):
"""
:type nums: List[int]
:rtype: int
"""
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
代码说明:
时间复杂度: O(logn)