You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写程序查找数字数组中局部最大值的索引?

找出数组局部最大值的索引实现方案

核心思路

  • 先处理特殊场景:如果数组只有一个元素,直接返回[0]
  • 遍历数组的中间元素(排除第一个和最后一个元素,因为它们缺少一侧相邻元素)
  • 对每个中间元素,判断其是否同时大于左右两个相邻元素,满足条件则记录其索引

代码实现(Python)

def CheckMaximum(data):
    max_indices = []
    arr_length = len(data)
    
    # 处理单个元素的情况
    if arr_length == 1:
        return [0]
    
    # 遍历中间元素(索引从1到倒数第二个)
    for idx in range(1, arr_length - 1):
        current = data[idx]
        left = data[idx - 1]
        right = data[idx + 1]
        if current > left and current > right:
            max_indices.append(idx)
    
    return max_indices

测试验证

  • 输入:data = [1,7,1,24,15]
  • 输出:[1, 3],符合预期(7和24分别是索引1、3处的局部最大值)
  • 输入:data = [5]
  • 输出:[0],符合要求

补充说明

如果需要将首尾元素也纳入判断(比如定义第一个元素大于右侧则为局部最大值,最后一个元素大于左侧则为局部最大值),只需修改遍历逻辑:

def CheckMaximum(data):
    max_indices = []
    arr_length = len(data)
    
    if arr_length == 1:
        return [0]
    
    # 判断第一个元素
    if data[0] > data[1]:
        max_indices.append(0)
    
    # 判断中间元素
    for idx in range(1, arr_length - 1):
        current = data[idx]
        if current > data[idx-1] and current > data[idx+1]:
            max_indices.append(idx)
    
    # 判断最后一个元素
    if data[-1] > data[-2]:
        max_indices.append(arr_length - 1)
    
    return max_indices

这个版本适用于更宽泛的局部最大值定义,可根据实际需求选择。

内容的提问来源于stack exchange,提问作者Bar0n

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 00:55:54