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

59 阅读3分钟

一、问题理解

这个问题要求根据给定的往届游戏比赛分数数组,确定小 M 的比赛目标分数。规则是如果分数中有三个或以上不同的分数,返回其中第三大的分数;如果不同的分数只有两个或更少,那么选择最大的分数作为目标。例如在样例 1 中,输入数组 [3, 2, 1],有三个不同的分数,所以返回第三大的分数 1。

二、问题分析

  1. 简单情况的考虑
    • 首先考虑输入数组长度较小的情况。当数组长度为 2 时,根据规则直接返回最大的分数。这是比较简单的情况,因为只有两个数字,不需要进行复杂的排序或查找操作。
    • 例如样例 2 中,输入 [1, 2],直接返回最大的分数 2。
  1. 一般情况的处理
    • 对于输入数组长度大于 2 的情况,需要判断不同分数的数量。可以通过对数组进行排序,然后去除重复的分数,来确定不同分数的数量。
    • 如果不同分数有三个或以上,就需要找到第三大的分数。可以通过遍历排序后的去重数组来找到第三大的分数。如果不同分数只有两个或更少,就返回最大的分数。
    • 例如在样例 3 中,输入 [2, 2, 3, 1],先对数组进行排序得到 [1, 2, 2, 3],去除重复分数后为 [1, 2, 3],不同分数只有三个,所以返回第三大的分数 1。
  1. 算法选择与优化
    • 为了对数组进行排序和去重,可以使用常见的排序算法如快速排序、归并排序等,然后通过遍历数组去除重复元素。也可以使用一些编程语言中提供的内置函数来实现排序和去重操作,这样可以提高代码的效率和可读性。
    • 在确定第三大的分数时,可以使用一个计数器来记录当前遍历到的位置,当计数器为 3 时,就找到了第三大的分数。如果在遍历过程中发现不同分数的数量小于 3,就直接返回最大的分数。

三、代码实现要点

  1. 排序与去重
    • 选择一种合适的排序算法对输入数组进行排序。可以使用编程语言自带的排序函数,如 Python 中的sorted()函数。
    • 对排序后的数组进行去重操作。可以使用遍历的方法,比较相邻的元素,如果相同则跳过,不同则添加到新的数组中。
  1. 确定目标分数
    • 如果去重后的数组长度小于等于 2,直接返回数组中的最大元素作为目标分数。
    • 如果去重后的数组长度大于 2,遍历去重后的数组,使用一个计数器记录当前遍历到的位置。当计数器为 3 时,返回当前元素作为第三大的分数。如果在遍历过程中发现不同分数的数量小于 3,就直接返回最大的分数。

四、学习收获

    • 通过这个问题,深入理解了数组的排序、去重和查找操作。学会了如何根据具体问题的要求选择合适的算法和数据结构来处理数组数据。
    • 了解到在处理实际问题时,需要仔细分析问题的条件和约束,选择最有效的方法来解决问题。同时,也锻炼了代码实现的能力,能够将问题的解决方案转化为具体的编程语言代码。
    • 还学习到了如何对问题进行优化,例如选择高效的排序算法和利用编程语言的内置函数来提高代码的效率。