青训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 中始终是 [],不是 {}。花括号 {} 通常用于表示对象或映射。

相关推荐
zlinear数据采集卡3 分钟前
数据采集卡从入门到精通(42):项目实战三——设备预测性维护系统,从布点到预警
开发语言·单片机·嵌入式硬件·安全·fpga开发
csdn_aspnet7 分钟前
C# 高效便利的处理数据
开发语言·windows·c#
ly768910 分钟前
XML 从入门到实践:语法、命名空间、XPath、XSD 与 Java 安全解析
xml·java·python
Chester_199914 分钟前
CSP202209.B何以包邮?
c语言·开发语言
caimouse26 分钟前
ReactOS 窗口系统分析(13):滚动条 — scrollbar.c + scrollex.c
c语言·开发语言·reactos
Sagittarius_A*26 分钟前
【好靶场】PHP反序列化入门练习2
开发语言·web安全·信息安全·php·代码审计·反序列化
winfredzhang34 分钟前
用 Python + wxPython 造一个照片工具箱:PDF / 加密ZIP / MP4 / 归档,以及我在这过程中踩到的 4 个坑
python·pdf·zip·mp4·移动
卷无止境40 分钟前
FastAPI 后台任务的边界,以及 Celery、Redis 与自建调度系统的选择
后端·python
NoteStream42 分钟前
MATLAB绘制带置信区间的折线散点图(科研绘图模板)
开发语言·matlab