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

50 阅读2分钟

问题描述

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

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

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

解题思路

  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)

知识总结

  • 集合:Python 中的 set 是一个无序且不重复的数据结构,非常适合用于去重。
  • 列表排序:使用 sorted() 函数可以方便地对列表进行排序,通过参数 reverse=True 可以实现降序排序。
  • 时间复杂度意识:在处理大量数据时,应考虑算法的时间复杂度。对于此题,虽然使用了排序,但考虑到数据量一般不大,这样的方法是可行的。

学习计划

  1. 制定目标:设定短期和长期的学习目标,如每周完成一定数量的题目。
  2. 定期回顾:每周末或每月末回顾错题,加深理解并巩固知识点。
  3. 多样化练习:除了刷题外,还可以阅读相关书籍、观看教学视频等,多角度学习。
  4. 交流分享:加入学习小组,与他人讨论问题,互相帮助。

工具运用

  • AI辅助学习:利用豆包MarsCode AI提供的智能化建议,针对性地解决自己的薄弱环节。
  • 结合其他资源:将AI刷题与在线课程、编程社区等资源相结合,形成互补的学习体系。
  • 实践项目:理论学习后,尝试参与实际项目开发,将所学知识应用到实践中,增强实战能力。