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

如何在数组中寻找非第二大值的第二极大值及其对应深度?

寻找数组中的特定第二极大值

问题定义

需要定位的第二极大值并非数组全局第二大的数值,而是遵循以下逻辑的局部最大值:

  • 先找到数组的第一极大值(首个峰值,即当前元素大于下一个元素的位置)
  • 从该位置之后,找到数值结束持续下降阶段后出现的第一个局部最大值,同时获取其对应深度

以示例数组为例:

  • x = [10, 8, 6, 8, 6, 4, 2],第一极大值为10(对应深度100m)
  • 之后数值持续下降至6(深度60m),随后回升到8(深度40m),这个8就是目标的第二极大值

解决方案代码

def find_second_max(x, depth):
    # 1. 定位第一极大值的位置
    first_max_idx = 0
    for i in range(1, len(x)):
        if x[i] > x[first_max_idx]:
            first_max_idx = i
        else:
            # 遇到第一个比前项小的元素,确定第一极大值位置
            break
    
    # 2. 找到下降阶段的结束点(数值开始回升的转折点)
    descent_end_idx = first_max_idx
    for i in range(first_max_idx + 1, len(x)):
        if x[i] > x[i-1]:
            descent_end_idx = i - 1
            break
    else:
        # 若后续全程下降无回升,返回无结果
        return None, None
    
    # 3. 在回升区间寻找第一个局部最大值
    second_max_val = x[descent_end_idx + 1]
    second_max_depth = depth[descent_end_idx + 1]
    for i in range(descent_end_idx + 2, len(x)):
        if x[i] > second_max_val:
            second_max_val = x[i]
            second_max_depth = depth[i]
        elif x[i] < second_max_val:
            # 再次出现下降,说明当前局部最大值已找到
            break
    
    return second_max_val, second_max_depth

# 测试示例
x = [10, 8, 6, 8, 6, 4, 2]
depth = [100, 80, 60, 40, 20, 10, 5]

second_val, second_depth = find_second_max(x, depth)
print(f"第二极大值:{second_val},对应深度:{second_depth}m")

代码说明

  • 步骤1:遍历数组,找到第一个峰值(第一极大值),即当遇到首个小于前项的元素时,前项位置为第一极大值
  • 步骤2:从第一极大值后继续遍历,找到数值停止下降、开始回升的转折点,确定下降阶段终点
  • 步骤3:从回升点开始,寻找第一个局部最大值(再次出现下降时停止遍历),此值即为目标第二极大值

可视化验证

通过以下代码绘制曲线,可直观验证结果:

import matplotlib.pyplot as plt

x = [10, 8, 6, 8, 6, 4, 2]
depth = [100, 80, 60, 40, 20, 10, 5]

plt.plot(x, depth, marker='o', linestyle='-')
# 标记关键节点
plt.scatter(10, 100, color='red', label='第一极大值')
plt.scatter(8, 40, color='green', label='第二极大值')

plt.ylabel('Depth')
plt.xlabel('Variable x')
plt.gca().invert_yaxis()  # 反转y轴,符合深度越深数值越大的直观逻辑
plt.legend()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:01:05