我想要实现一个排行榜,但我意识到即使这看起来是一个简单的任务,也可能会变得非常复杂。我可以使用正确索引的数据库,但我想知道是否有一种高效的数据结构可以支持以下操作。
- 为给定玩家添加分数
- 检索给定玩家的最佳得分
- 检索给定玩家的排名
- 检索得分高于和低于当前玩家排名的玩家
- 支持不同的时间范围:今天的得分、本周、今年等
- 适用于大约100,000个玩家
- 尽可能小的内存占用(即在廉价机器上运行)