伴学笔记6

37 阅读3分钟

题目回顾

小M希望根据往届游戏比赛的排名来确定自己的目标分数。规则是,如果分数中有三个或以上不同的分数,就返回其中第三大的分数;如果不同的分数只有两个或更少,则选择最大的分数。

解题思路

  1. 数据预处理:首先,我们需要对输入的分数数组进行去重处理,因为题目只关心不同的分数。这里,我们使用Python的集合(set)数据结构来高效地去除重复项。
  2. 排序:接下来,我们需要对去重后的分数进行排序,以便找到第三大的分数或最大的分数。由于题目要求返回的是分数值,而不是分数在数组中的位置,因此我们需要按照分数值的大小进行降序排序。这里,我们使用Python的sorted()函数,并设置reverse=True参数来实现降序排序。
  3. 结果判断:最后,我们根据排序后的分数列表的长度来判断应该返回哪个分数。如果列表长度大于等于3,说明存在三个或更多的不同分数,我们返回第三大的分数(即列表中的第二个元素,因为索引是从0开始的);如果列表长度小于3,说明只有两个或更少的不同分数,我们返回最大的分数(即列表中的第一个元素)。

代码详解

python复制代码
	def solution(n: int, nums: list) -> int:

	    # 使用集合去重

	    unique_scores = set(nums)

	    

	    # 将集合转换为列表并排序

	    sorted_scores = sorted(unique_scores, reverse=True)

	    

	    # 判断列表长度并返回结果

	    if len(sorted_scores) >= 3:

	        return sorted_scores[2]  # 返回第三大的分数

	    else:

	        return sorted_scores[0]  # 返回最大的分数

知识总结

通过这道题目,我掌握了以下几个新知识点:

  • 集合去重:集合是一个无序的、不包含重复元素的数据结构。在Python中,可以使用集合来高效地去除列表中的重复元素。
  • 排序算法sorted()函数是Python内置的排序函数,可以对列表进行排序。通过设置reverse=True参数,可以实现降序排序。
  • 条件判断:在编程中,经常需要根据不同的条件来执行不同的代码块。这里,我们使用if-else语句来根据排序后的分数列表的长度来判断应该返回哪个分数。

学习建议

对于入门同学来说,我建议大家:

  • 多动手实践:理论学习是必要的,但更重要的是通过动手实践来加深理解。可以尝试自己编写一些简单的程序来验证所学知识点。
  • 多看官方文档:Python的官方文档是学习Python的最佳资源之一。里面包含了丰富的函数说明和示例代码,可以帮助我们更好地理解和学习Python的各种特性。
  • 多参与讨论:在学习过程中,难免会遇到一些难题和困惑。此时,可以多参与一些技术论坛或社区的讨论,向其他开发者请教和交流心得。

学习计划

结合豆包MarsCode AI刷题功能,我制定了一个高效的学习计划:

  • 每日刷题:每天固定时间刷题,逐渐提高难度和数量。
  • 错题回顾:对于做错的题目,及时记录下来并回顾错误原因和正确解法。
  • 定期总结:每周或每月对所学知识进行总结和梳理,形成自己的知识体系。
  • 利用AI辅助:通过豆包MarsCode AI的刷题功能,可以快速定位自己的薄弱环节并进行针对性练习。同时,也可以利用AI提供的解题思路和示例代码来帮助自己理解和解决问题。