根据给定的分数数组来计算目标分数

42 阅读3分钟

def solution(n: int, nums: list) -> int: # 使用集合去重并排序,reverse=True表示从大到小排序 unique_nums = sorted(set(nums), reverse=True)

# 如果不同的分数有三个或以上,返回第三大的分数
if len(unique_nums) >= 3:
    return unique_nums[2]
# 否则返回最大的分数
else:
    return unique_nums[0]

if name == 'main': print(solution(3, [3, 2, 1]) == 1) # 第三大的分数是1 print(solution(2, [1, 2]) == 2) # 只有两个不同的分数,返回最大的分数2 print(solution(4, [2, 2, 3, 1]) == 1) # 第三大的分数是1 代码解释: set(nums): 将 nums 转换为集合,这一步去除了重复的分数,保留了所有不同的分数。 sorted(set(nums), reverse=True): 将去重后的分数进行排序,reverse=True 表示从大到小排序。 len(unique_nums) >= 3: 如果去重后的分数数量大于或等于3,则返回第三大的分数,即索引为2的元素。 else: 如果去重后的分数数目小于3,则返回最大的分数(即排序后的第一个元素)。 总结的新知识点 集合(set):集合是一种无序且元素唯一的数据结构,可以用于去重。 排序:使用 Python 的 sorted() 函数可以对列表或集合进行排序,reverse=True 实现降序排列。 索引访问:在排序后的列表中,可以通过索引访问元素,从而获取第三大的元素等。 对入门同学的学习建议 数据结构的理解:学习集合、列表、字典等基本数据结构的应用。集合特别适用于去重,列表适合存储有序的数据。 排序与去重:掌握常见的排序算法(如快速排序、归并排序)以及如何使用 Python 内置的 sorted() 函数进行排序。 代码优化:理解集合去重和排序的复杂度,并且在大数据量的情况下注意性能。 高效学习方法 结合 豆包MarsCode AI 刷题功能,可以进行针对性学习,以下是我总结的高效学习方法:

制定刷题计划:

可以按照知识点分类进行刷题,例如先刷排序类、再刷动态规划类题目,这样有助于加强理解和记忆。 对于每个阶段设定合理的题量,不要一开始就给自己设定过多的题目量。 利用错题进行针对性学习:

每次做完题后,都要复习错题,并且弄明白为什么错。通过错题反思自己在知识点上的薄弱,集中时间复习。 通过 MarsCode AI 刷题功能,能够自动保存错题,帮助我们系统地进行错题复习。 复习与反馈:

每周回顾一遍已经做过的题目,检验自己的进步,并且对已经掌握的题目做进一步优化。 结合多种学习资源:

结合 MarsCode AI 的刷题功能和一些在线教程(如 LeetCode、力扣等),可以扩展题目类型,并且获得更多不同的解法,帮助深入理解问题。 利用其他平台的讨论和解析,学习更多高效的算法和技巧。 通过这种方式,可以在最短时间内提高解题能力,特别是在处理复杂问题时,能够更加得心应手。