**省超足球比赛获胜队伍计算**

2026 华为OD机试真题 7月4日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

题目描述

江苏省举办省级足球超级联赛,以市为单位参赛。请根据给定的比赛结果,输出获得冠军、亚军、季军的队伍名称。

2026 华为OD机试真题 7月4日华为OD上机新系统考试真题 100 分题型

比赛安排

  1. 参赛的队伍总数为 teamNumteamNum 的取值范围是 3≤teamNum≤15;

  2. 比赛采用单循环赛制:

    • 任意两支参赛队伍之间至少比赛 1 场,若两队队伍之间不存在比赛记录,说明其中有队伍弃赛;
    • 总比赛场次不超过 teamNum×(teamNum−1)/2 场;
  3. 比赛最终各队伍不允许出现积分和净胜球都完全相同的情况。

计分规则

  1. 胜者得 3 分,平局各得 1 分,负者得 0 分;
  2. 每场比赛记录双方的进球数(进球数 ≥0),从而计算净胜球(进球数 - 失球数)。

排名规则

首先按总积分从高到低排序。若积分相同,则按净胜球从高到低排序。

输入描述

第一个参数:为一个整数 teamNum,表示参赛队伍的数量。teamNum 的取值范围是 3≤teamNum≤15,若比赛队伍超过此范围则输入不合法。

第二个参数:为一个二维数组。二维数组的每一行表示一场比赛的结果,格式为: 队伍A名称 队伍A进球数 队伍B进球数 队伍B名称;

输出描述

如果输入合法,则输出一个字符串列表,分别为冠军、亚军、季军的队伍名称; 如果输入不合法,则输出一个空字符串列表。

补充说明

所有不符合题目描述中"比赛安排"、"积分规则"章节约束的输入均视为不合法输入,程序输出按照输入不合法处理。

示例1

输入

3,[["Beijing","2","1","Shanghai"],["Beijing","3","0","Guangzhou"],["Shanghai","1","1","Guangzhou"]]

输出

["Beijing","Shanghai","Guangzhou"]

说明

Beijing:

vs Shanghai: 胜(得 3 分,净胜球 +1)

vs Guangzhou: 胜(得 3 分,净胜球 +3)

总积分:6,总净胜球:4

Shanghai: vs Beijing: 负(得 0 分,净胜球 -1)

vs Guangzhou: 平(得 1 分,净胜球 0)

总积分:1,总净胜球:-1

Guangzhou:

vs Beijing: 负(得 0 分,净胜球 -3)

vs Shanghai: 平(得 1 分,净胜球 0)

总积分:1,总净胜球:-3

所以排名:

  • Beijing (6 分, 净胜球 +4) > Shanghai (1 分, 净胜球 -1) > Guangzhou (1 分, 净胜球 -3)

示例2

输入

3,[["Beijing","1","1","Shanghai"],["Guangzhou","1","1","Beijing"],["Shanghai","1","1","Guangzhou"]]

输出

[]

说明

Beijing:

vs Shanghai: 平(得 1 分,净胜球 0)

vs Guangzhou: 平(得 1 分,净胜球 0)

总积分:2,总净胜球:0

Shanghai:

vs Beijing: 平(得 1 分,净胜球 0)

vs Guangzhou: 平(得 1 分,净胜球 0)

总积分:2,总净胜球:0

Guangzhou:

vs Beijing: 平(得 1 分,净胜球 0)

vs Shanghai: 平(得 1 分,净胜球 0)

总积分:2,总净胜球:0

所以排名结果为:Beijing = Shanghai = Guangzhou(三队同积 2 分,净胜球均为 0),并列,不符合题目条件中出现积分和净胜球都完全相同的情况。

解题思路

核心思想

模拟足球联赛积分排名流程:

  1. 验证输入合法性(队伍数量、比赛场次、是否所有队伍都有比赛)
  2. 统计每场比赛的积分和净胜球
  3. 检查是否有无法区分的并列队伍
  4. 按积分和净胜球排序,取前三名

算法步骤

  1. 合法性检查:teamNum 范围 [3,15],且去重后的队伍数等于 teamNum
  2. 初始化积分、进球、失球统计表
  3. 遍历每场比赛,更新统计数据和已比赛记录
  4. 验证比赛场次不超过最大场次
  5. 验证每对队伍都有比赛记录
  6. 验证没有无法区分的并列队伍
  7. 排序并返回前三名

复杂度分析

  • 时间复杂度:O(N²),主要在检查队伍比赛记录和并列情况
  • 空间复杂度:O(N),存储队
THE END