青训10_1121_01_游戏排名第三大的分数

青训10_1121_01_游戏排名第三大的分数.md

文章目录

问题描述

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

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

测试样例

样例1:

输入:n = 3,nums = [3, 2, 1]

输出:1

样例2:

输入:n = 2,nums = [1, 2]

输出:2

样例3:

输入:n = 4,nums = [2, 2, 3, 1]

输出:1

示例

python 复制代码
def solution(n: int, nums: list) -> int:
    # write code here
    return 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 数组只要判断数量<=2一个逻辑,获取最大值进行更新返回即可
2  >=3一个逻辑,进行排序,返回第三个数即可。

答案

python 复制代码
def solution(n: int, nums: list) -> int:
    # 去重并降序排序
    unique_nums = sorted(set(nums), reverse=True)
    
    # 如果不同的分数少于3个,返回最大值
    if len(unique_nums) < 3:
        return unique_nums[0]
    
    # 返回第三大的分数
    return unique_nums[2]

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、关于[] 在python和java的区别

疑问来源:我有个疑问,[]这种括号是表示list还是set。因为java中是表示数组,list是{},还是python不一样呢。[3, 2, 1]

解释

在 Python 中,[3, 2, 1] 这种方括号语法表示的是列表(List),不是集合(Set)。让我详细解释 Python 中的数据结构:

  1. 列表 List: 使用方括号 []
python 复制代码
my_list = [3, 2, 1]  # 列表,可以包含重复元素,有序

2、集合 Set: 使用花括号 {}set()

python 复制代码
my_set = {3, 2, 1}  # 集合,不包含重复元素,无序
# 或者
my_set = set([3, 2, 1])  # 使用set()函数创建集合

主要区别:

  • List 允许重复元素,保持元素顺序
  • Set 不允许重复元素,不保证顺序

在我之前的解决方案中,set(nums) 是将输入的列表转换为集合,以去除重复元素。

示例对比:

python 复制代码
# List
nums_list = [3, 2, 1, 2]  # 允许重复
print(nums_list)  # 输出: [3, 2, 1, 2]
print(len(nums_list))  # 输出: 4

# Set
nums_set = set([3, 2, 1, 2])  # 去除重复
print(nums_set)  # 输出: {1, 2, 3}
print(len(nums_set))  # 输出: 3

这与 Java 有些不同。Java 中:

  • [] 通常表示数组
  • List 是接口,实现通常是 ArrayList<>()
  • Set 的实现如 HashSet<>()

Python 在这方面更简洁灵活。希望这个解释能帮助您理解 Python 中的列表和集合!

2、那java中list变成jason是[],而不是{}吗

解释:

在 Java 中,List 转换为 JSON 时,实际上是使用 [](方括号),而不是 {}(花括号)。

JSON 中的表示:

  1. List/数组 → [1, 2, 3]
  2. 对象/Map → {"key": "value"}

Java 中的转换示例:

java 复制代码
// 使用 Jackson 库
ObjectMapper mapper = new ObjectMapper();
List<String> list = Arrays.asList("apple", "banana", "cherry");
String jsonString = mapper.writeValueAsString(list);
// jsonString 会是 ["apple", "banana", "cherry"]

// 使用 Gson 库
Gson gson = new Gson();
String jsonString = gson.toJson(list);
// jsonString 也会是 ["apple", "banana", "cherry"]

所以,List 在 JSON 中始终是 [],不是 {}。花括号 {} 通常用于表示对象或映射。

相关推荐
крон2 小时前
【Auto.js例程】华为备忘录导出到其他手机
开发语言·javascript·智能手机
zh_xuan2 小时前
c++ 单例模式
开发语言·c++·单例模式
老胖闲聊3 小时前
Python Copilot【代码辅助工具】 简介
开发语言·python·copilot
Blossom.1183 小时前
使用Python和Scikit-Learn实现机器学习模型调优
开发语言·人工智能·python·深度学习·目标检测·机器学习·scikit-learn
曹勖之3 小时前
基于ROS2,撰写python脚本,根据给定的舵-桨动力学模型实现动力学更新
开发语言·python·机器人·ros2
豆沙沙包?3 小时前
2025年- H77-Lc185--45.跳跃游戏II(贪心)--Java版
java·开发语言·游戏
军训猫猫头4 小时前
96.如何使用C#实现串口发送? C#例子
开发语言·c#
lyaihao4 小时前
使用python实现奔跑的线条效果
python·绘图
liuyang-neu4 小时前
java内存模型JMM
java·开发语言
ai大师5 小时前
(附代码及图示)Multi-Query 多查询策略详解
python·langchain·中转api·apikey·中转apikey·免费apikey·claude4