青训营X豆包MarsCode 技术训练营第四课-排名第三的分数 | 豆包MarsCode AI刷题

50 阅读3分钟

如果分数中有三个或以上不同的分数,返回其中第三大的分数。 如果不同的分数只有两个或更少,那么小M将选择最大的分数作为他的目标。 请你帮小M根据给定的分数数组计算目标分数。

题目解析

题目要求
根据给定的分数数组 nums 和数组的长度 n,计算目标分数。目标分数的选择规则如下:

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

思路

  1. 首先,我们需要去重分数数组,因为重复的分数在计算第三大的分数时不应被重复考虑。

  2. 根据去重后的数组长度,我们可以确定返回哪种分数:

    • 如果长度大于等于3,则返回第三大的分数。
    • 如果长度小于3,则返回最大的分数。

图解
(以样例3为例)

  • 输入:n = 4, nums = [2, 2, 3, 1]
  • 步骤1:去重,得到 [1, 2, 3]
  • 步骤2:因为去重后的数组长度为3,所以返回第三大的分数,即 1

代码详解

python复制代码
	def find_target_score(n, nums):

	    # 去重

	    unique_nums = list(set(nums))

	    # 排序(降序)

	    unique_nums.sort(reverse=True)

	    

	    # 根据长度返回相应的分数

	    if len(unique_nums) >= 3:

	        return unique_nums[2]

	    else:

	        return unique_nums[0]

	 

	# 测试样例

	print(find_target_score(3, [3, 2, 1]))  # 输出:1

	print(find_target_score(2, [1, 2]))     # 输出:2

	print(find_target_score(4, [2, 2, 3, 1]))  # 输出:1

知识总结

新知识点

  • set 数据结构:用于去重。
  • sort 方法:用于排序。reverse=True 参数表示降序排序。
  • 条件判断:根据数组长度选择返回第三大的分数或最大的分数。

理解

  • set 数据结构可以高效地去除列表中的重复元素。
  • 排序操作是处理类似问题的常用方法,通过排序可以方便地找到最大或最小的几个元素。

学习建议

  • 对于初学者,建议多练习使用 set 和 sort 方法,理解它们的基本用法和适用场景。
  • 熟悉条件判断语句,能够根据不同的条件选择执行不同的代码块。

学习计划

制定刷题计划

  1. 基础阶段:每天练习20道简单的算法题,重点掌握基础数据结构和算法。
  2. 进阶阶段:每天练习10道中等难度的算法题,加强对复杂问题的解决能力。
  3. 冲刺阶段:每天练习5道高难度算法题,模拟比赛环境,提高解题速度和准确性。

利用错题进行针对性学习

  • 每次刷题后,仔细分析错题原因,总结解题技巧。
  • 将错题整理成错题本,定期回顾和练习。
  • 针对错题中涉及的知识点,查找相关资料进行深入学习。

工具运用

AI刷题功能

  • 题目解析:对于不会的题目,可以查看AI提供的详细解析,理解解题思路和方法。
  • 实时反馈:AI会实时反馈刷题进度和正确率,帮助调整学习计划。

与其他学习资源结合

  • 在线编程平台:在在线编程平台上进行实际编程练习,提高编程能力。
  • 社区交流:加入算法学习社区,与其他学习者交流心得和经验,共同进步。

通过以上方法,我们可以更高效地利用AI刷题功能进行学习,提高算法和数据结构的学习效果。