📅  最后修改于: 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)