📜  门| GATE-CS-2006 |第 76 题(1)

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

这是一道来自GATE-CS-2006的题目,需要求解一组数字中的最大值和次大值。

题目描述

给定一组数字,需要求出其中的最大值和次大值。

输入格式

输入的数字会以列表的形式给出,例如:

[1, 2, 3, 4, 5]
输出格式

输出的结果应该是一个包含最大值和次大值的元组,例如:

(5, 4)
解题思路

该题可以使用一个循环来遍历整个列表,同时记录下最大值和次大值。

首先假设最大值和次大值都为0,然后遍历列表,如果当前数字比最大值大,则更新最大值和次大值,如果当前数字比次大值大,仅仅更新次大值。

最后返回最大值和次大值的元组即可。

下面是Python的代码实现:

def get_max_and_second_max(arr):
    max_val = 0
    second_max_val = 0

    for val in arr:
        if val > max_val:
            second_max_val = max_val
            max_val = val
        elif val > second_max_val:
            second_max_val = val

    return (max_val, second_max_val)
测试样例

输入样例1:

[1, 2, 3, 4, 5]

输出样例1:

(5, 4)

输入样例2:

[9, 3, 6, 1, 2, 5, 8]

输出样例2:

(9, 8)
总结

本题主要考察了对于列表的遍历以及变量的记录使用,通过本题可以很好的学习到循环的应用。