高效的数据结构来存储记分板

时间:2018-04-09 19:58:17

标签: algorithm data-structures hashmap hashtable

我无法解决,我需要一些建议。 例如: 斯诺克球员每个月都会参加比赛,他们希望保持战绩,谁赢了,谁输了。 他们已经打过5次了:下面的结果也是谁打过球,谁赢了。

1st: Cobra VS DODO - Winner = Cobra
2nd: John VS DON - Winner = John
3rd: Swimmer VS Funter - Winner = Swimmer
4th: DODO VS Funter - Winner = DODO
5th: John VS Cobra - Winner = Cobra
6th: DON vs Swimmer - Winner = DON

所以我的问题是,哪种数据结构最好从图形,哈希映射,树,链表中存储这些信息,哪种结构更有效。

我需要任何图形或视觉表示,如下所示: enter image description here 谢谢

1 个答案:

答案 0 :(得分:0)

我的建议是从更广泛的角度思考所有实体都参与其中。

从我的头脑中,这些是以下对象(模型)定义:

 1. Game (game_id : id,  players : [a, b](array of player id involved), winner :a, loser :b)
 2. Players (player_id : id, name: string, games_played : int, lost : int, won: int)

在您的服务中,您可以维护Players对象的散列映射,<player_id, Player Object>作为精确的散列映射定义。

现在对于每个game,通过查找播放器的id找到所涉及的玩家,在你的情况下是玩家的名字。 一旦同时提取了players,就将它们的games_played递增1.现在,如果玩家A赢了游戏,则递增A的{​​{1}按1计算,玩家won的{​​{1}}计数为1.

对所有游戏重复相同的操作。 现在,您可以公开服务中的B哈希映射,以便每个玩家获得您想要的查询。这样,您始终可以有效地找到每个玩家的lostPlayergames_played计数。如果可以,您可以直接打印哈希映射,以查看每个won