在Python中查找由数字列表中的本地峰值元素的索引

在Python中查找由数字列表中的本地峰值元素的索引

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

  • 当i = 0时,nums[i] > nums[i + 1]

  • 当i = n-1时,nums[i] > nums[i – 1]

  • nums[i – 1] < nums[i] > nums[i + 1],否则

因此,如果输入为nums = [5, 6, 7, 6, 9],则输出将为[2, 4],因为索引2处的元素为7,其大于两个邻居,而索引4处的项为9,其大于左侧的项。

要解决问题,我们将按照以下步骤进行 –

  • ans:一个新列表

  • n:num的大小

  • 如果n与1相同,则

    • 返回ans
  • 对于nums中的每个索引i和数字num执行以下操作:
    • 如果i> 0且i < n – 1,则 –
      • 如果nums [i-1] < num> nums [i + 1],则 –

      • 在ans末尾插入i

      • 如果i与0相同,则 –

      • 如果num> nums [i + 1],则 –

        • 在ans末尾插入i
      • 如果i与n-1相同,则 –

      • 如果num> nums [i – 1],则 –

        • 在ans末尾插入i
  • 返回ans

示例

让我们看一下以下实现以更好地理解

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]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程