前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >石头剪刀布游戏 - 华为OD机试题

石头剪刀布游戏 - 华为OD机试题

作者头像
小土豆Yuki
发布2024-07-15 09:27:03
1290
发布2024-07-15 09:27:03
举报
文章被收录于专栏:洁癖是一只狗

题目描述

石头剪刀布游戏有 3 种出拳形状: 石头、剪刀、布。分别用字母 A,B,C 表示游戏规则:

  1. 出拳形状之间的胜负规则如下: A>B; B>C; C>A;左边一个字母,表示相对优势形状。右边一个字母,表示相对劣势形状。
  2. 当本场次中有且仅有一种出拳形状优于其它出拳形状,则该形状的玩家是胜利者。否则认为是平局。当发生平局,没有赢家。有多个胜利者时,同为赢家。

例如 1: 三个玩家出拳分别是A,B,C,由于出现三方优势循环(即没有任何一方优于其它出拳者),判断为平局。

例如 2: 两个玩家,出拳分别是 A,B,出拳 A的获胜。

例如 3: 三个玩家,出拳全部是 A,判为平局。

输入描述

在一场游戏中,每个玩家的信息为一行。玩家数量不超过 1000。

每个玩家信息有 2 个字段,用空格隔开:

  1. 玩家 ID:一个仅由 英文字母Q和数字组成的字符串。
  2. 出拳形状: 以英文大写字母表示,A、B、C 形状。

输出描述

输出为赢家的玩家 ID 列表(一个或多个),每个 ID 一行,按字符串升序排列。

如果没有赢家,输出为“NULL"字符串。

示例一

代码语言:javascript
复制
输入:
abc1 A
xyz B

输出:
abc1

说明:
A比B有优势,abc1 胜出。
。

示例二

代码语言:javascript
复制
输入:
abc1 A
xyz A

输出:
NULL

说明:
没有优胜的出拳形状,平局

示例三

代码语言:javascript
复制
输入:
abc1 A
def A
alic A
xyz B

输出:
abc1
alic
def

说明:
A为优胜方,有三个赢家。

java题解

题解

代码语言:javascript
复制
解题思路
题目要求找出赢家的玩家 ID 列表,或者输出 “NULL”。首先,我们需要将玩家的信息按照出拳形状分组,即分成A、B、C三组。然后,判断每一组中是否有且仅有一种出拳形状优于其它出拳形状,如果是,则该组中的玩家是胜利者。最后,将胜利者的玩家 ID 按照字符串升序排列输出。

代码描述
使用三个列表A、B、C分别表示出拳形状为A、B、C的玩家。
遍历输入,根据出拳形状将玩家信息分组。
判断每一组中是否有且仅有一种出拳形状优于其它出拳形状,如果是,则该组中的玩家是胜利者。
将胜利者的玩家 ID 按照字符串升序排列输出;如果没有胜利者,输出"NULL"。
复杂度分析
时间复杂度:假设有n个玩家,遍历输入的时间复杂度为O(n)。

空间复杂度:使用了三个列表A、B、C来存储玩家信息,空间复杂度为O(n)。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 洁癖是一只狗 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 输入描述
  • 输出描述
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档