如果分数中有三个或以上不同的分数,返回其中第三大的分数。 如果不同的分数只有两个或更少,那么小M将选择最大的分数作为他的目标。 请你帮小M根据给定的分数数组计算目标分数。
题目解析
题目要求:
根据给定的分数数组 nums 和数组的长度 n,计算目标分数。目标分数的选择规则如下:
- 如果分数中有三个或以上不同的分数,返回其中第三大的分数。
- 如果不同的分数只有两个或更少,那么小M将选择最大的分数作为他的目标。
思路:
-
首先,我们需要去重分数数组,因为重复的分数在计算第三大的分数时不应被重复考虑。
-
根据去重后的数组长度,我们可以确定返回哪种分数:
- 如果长度大于等于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方法,理解它们的基本用法和适用场景。 - 熟悉条件判断语句,能够根据不同的条件选择执行不同的代码块。
学习计划
制定刷题计划:
- 基础阶段:每天练习20道简单的算法题,重点掌握基础数据结构和算法。
- 进阶阶段:每天练习10道中等难度的算法题,加强对复杂问题的解决能力。
- 冲刺阶段:每天练习5道高难度算法题,模拟比赛环境,提高解题速度和准确性。
利用错题进行针对性学习:
- 每次刷题后,仔细分析错题原因,总结解题技巧。
- 将错题整理成错题本,定期回顾和练习。
- 针对错题中涉及的知识点,查找相关资料进行深入学习。
工具运用
AI刷题功能:
- 题目解析:对于不会的题目,可以查看AI提供的详细解析,理解解题思路和方法。
- 实时反馈:AI会实时反馈刷题进度和正确率,帮助调整学习计划。
与其他学习资源结合:
- 在线编程平台:在在线编程平台上进行实际编程练习,提高编程能力。
- 社区交流:加入算法学习社区,与其他学习者交流心得和经验,共同进步。
通过以上方法,我们可以更高效地利用AI刷题功能进行学习,提高算法和数据结构的学习效果。