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

相关推荐
__lost3 分钟前
Python 使用 OpenCV 将 MP4 转换为 GIF图
开发语言·python·opencv
霍夫曼vx_helloworld735218 分钟前
(二)手势识别——动作模型训练【代码+数据集+python环境(免安装)+GUI系统】
开发语言·python
誓约酱22 分钟前
Linux 下进程基本概念与状态
linux·运维·服务器·开发语言·c++
学习前端的小z23 分钟前
【C语言】深入剖析 C 语言中数组与指针的紧密联系及高效应用
c语言·开发语言
神仙别闹23 分钟前
基于Python实现三种不同类型BP网络及分析
开发语言·python
喵呜角角31 分钟前
QML TableView(Qt_6_5_3_MinGW_64)
开发语言·qt·qml·qt quick
Peter_chq42 分钟前
【计算机网络】多路转接之poll
linux·c语言·开发语言·网络·c++·后端·poll
studyer_domi1 小时前
matlab蜗轮蜗杆设计优化问题
开发语言·matlab
听我对云说1 小时前
Java语言程序设计 选填题知识点总结
java·开发语言
陈健平1 小时前
2024最新YT-DLP使用demo网页端渲染
python·fastapi·jinja2·yt-dlp·yt_dlp