游戏排名第三大的分数 | 豆包MarsCode AI刷题

51 阅读1分钟

问题描述

小M想要通过查看往届游戏比赛的排名来确定自己比赛的目标分数。他希望找到往届比赛中排名第三的分数,作为自己的目标。具体规则如下:

  1. 如果分数中有三个或以上不同的分数,返回其中第三大的分数。
  2. 如果不同的分数只有两个或更少,那么小M将选择最大的分数作为他的目标。

请你帮小M根据给定的分数数组计算目标分数。

测试样例

样例1:

输入:n = 3, nums = [3, 2, 1] 输出:1

样例2:

输入:n = 2, nums = [1, 2] 输出:2

样例3:

输入:n = 4, nums = [2, 2, 3, 1] 输出:1

解题思路

  1. 理解问题:我们需要找到数组中第三大的不同分数。如果不同的分数少于三个,则返回最大的分数。

  2. 数据结构选择:可以使用集合(set)来存储不同的分数,因为集合会自动去重。

  3. 算法步骤

    • 将数组转换为集合以去除重复元素。
    • 如果集合的大小大于等于3,则返回集合中第三大的元素。
    • 如果集合的大小小于3,则返回集合中最大的元素。
def solution(n: int, nums: list) -> int:
    # write code here
    nums = set(nums)
    if len(nums) < 3:
        return max(nums)
    else:
        sorted_nums = sorted(nums)
        return sorted_nums[-3]
        return 0if __name__ == '__main__':
    print(solution(3, [3, 2, 1]) == 1)
    print(solution(2, [1, 2]) == 2)
    print(solution(4, [2, 2, 3, 1]) == 1)