📜  计算第二高在最高之前的子数组(1)

📅  最后修改于: 2023-12-03 15:12:04.859000             🧑  作者: Mango

计算第二高在最高之前的子数组

介绍

在给定数组中,找到最高的数字,并计算它前面的子数组中的第二高数字。

例如,对于数组 [3, 7, 6, 9, 10, 8, 2, 1], 最高数字是10,前面的子数组是[3, 7, 6, 9],第二高数字是9。

思路

我们可以遍历整个数组,并用两个变量来跟踪最高数字和第二高数字。在遍历数组时,如果当前数字大于最高数字,则将最高数字更新为当前数字,并将第二高数字更新为之前的最高数字。如果当前数字小于最高数字但大于第二高数字,则将第二高数字更新为当前数字。

最后,我们检查第二高数字是否在最高数字之前,如果是,则返回最高数字前面的子数组和第二高数字,否则返回“没有找到满足条件的子数组”。

代码实现

以下是使用Python实现的示例代码:

def find_second_highest(arr):
    max_num = float('-inf')
    sec_max_num = float('-inf')
    for num in arr:
        if num > max_num:
            sec_max_num = max_num
            max_num = num
        elif num > sec_max_num:
            sec_max_num = num
    idx = arr.index(max_num)
    if sec_max_num in arr[:idx]:
        return arr[:idx], sec_max_num
    return "No subarray found"
示例
arr = [3, 7, 6, 9, 10, 8, 2, 1]
print(find_second_highest(arr))  # ([3, 7, 6, 9], 9)