青训营X豆包MarsCode技术训练营第一课|豆包MarsCode AI刷题

38 阅读2分钟

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

  1. 如果分数中有三个或以上不同的分数,返回其中第三大的分数。
  2. 如果不同的分数只有两个或更少,那么小M将选择最大的分数作为他的目标。 请你帮小M根据给定的分数数组计算目标分数。 对以上题目的解析:首先,我们需要找到数组中第三大的唯一分数,返回其结果。再者,如果数组中不同的分数少于三个,则返回最大的分数。我们可以使用一个集合(set)来存储不同的分数,在使用一个列表(list)来存储这些不同的分数,并对其进行排序。- 将数组中的所有元素添加到一个集合中,以去除重复的分数。具体的解题步骤1.将集合转换为列表,并对其进行降序排序。2.如果列表的长度大于等于3,返回列表中的第三个元素(即第三大的分数)。否则,返回列表中的第一个元素(即最大的分数)。具体的代码为: def solution(n: int, nums: list) -> int: unique_scores = list(set(nums)) unique_scores.sort(reverse=True) if len(unique_scores) >= 3: return unique_scores[2] else: return unique_scores[0]

if name == 'main': print(solution(3, [3, 2, 1]) == 1) print(solution(2, [1, 2]) == 2) print(solution(4, [2, 2, 3, 1]) == 1) 结果可以正常输出。 这道题的知识点涉及1.集合(Set)的使用:集合是一种无序且不重复的元素集合。使用集合可以方便地去除数组中的重复元素。例如,set(nums)可以将数组 nums转换为一个集合并且自动去除重复的元素。2.列表(List)的操作:列表是一种有序的元素集合,支持多种操作,如添加、删除、排序等,list(set(nums))将集合转换为列表,方便了后续的排序操作。 在进行解题时,我会先把题目读懂,之后再思考选择合适的代码来进行解题,如果出现选择解题的代码不合适或者思路出现错误,我会通过MarsCode AI来帮我解决我所遇到的问题,再通过MarsCode AI的解答后,如果还有自己不懂得地方,我就会去搜索更为具体的内容来帮我解决我的困惑。并且还会针对自己疑问的地方多去选择同样类型的题去练习。