使用什么是最佳数据结构,知道要存储的数据包含固定数量的唯一值,哪些顺序很重要?特别是,我正在尝试最佳地存储52张卡片的状态,其中每张卡片由1到52的数字表示。
答案 0 :(得分:1)
一个数组/向量可以很好地为你做到这一点。
您可以使用整数标识固定数量的对象(卡片),但可能的整数值之间没有间隙。这允许您使用占用连续内存块的数据结构,并允许基于值(索引)直接访问,并且访问使用整数值的自然排序 - 这完全适合数组/向量
答案 1 :(得分:1)
如果您唯一关心的是表达排列(与自然顺序相对应),您可以选择factorial number system,这是排列的最小可想象表示。
顺便说一句:这不是一个非常实用的解决方案; 52!约为8E67; - )
答案 2 :(得分:0)
如果您想确保集合中的唯一性,可以在Java中使用LinkedHashSet 我希望其他语言/图书馆有类似的
答案 3 :(得分:0)
鉴于订单很重要并且有固定数量的元素,那么只需使用一系列卡片,如下所示:
Card[] cards = new Card[52];
确保从0到51的索引,在大多数编程语言中,它比从1到52的索引更简单。
答案 4 :(得分:0)
您只需要一个226位整数加上一个编号方案,用于将套牌映射到其可能的排序。
Storing a message in a deck of cards
Detailed explanation of the above link
key-deck(简单的Python代码)