首页 文章资讯内容详情

从 Python 中的数字列表中查找局部峰值元素索引的程序

2026-06-03 1 花语

假设我们有一个名为nums的数字列表,其长度至少为2。我们必须找到列表中每个峰值的索引。该列表按升序排序。指数i是峰值,当-

nums[i]>nums[i+1]当i=0

nums[i]>nums[i-1]当i=n-1

nums[i-1]<nums[i]>nums[i+1]else

因此,如果输入类似于nums=[5,6,7,6,9],那么输出将是[2,4],因为索引2处的元素是7,它大于两个邻居,并且项目位于索引4是9,这比它的左项大。

示例

让我们看下面的实现来更好地理解

def solve(nums): ans = [] n = len(nums) if n == 1: return ans for i, num in enumerate(nums): if i > 0 and i < n - 1: if nums[i - 1] < num > nums[i + 1]: ans.append(i) if i == 0: if num > nums[i + 1]: ans.append(i) if i == n - 1: if num > nums[i - 1]: ans.append(i) return ans nums = [5, 6, 7, 6, 9] print(solve(nums))

输入

[5, 6, 7, 6, 9]输出结果[2, 4]