Java 恒定时间排序的多重映射数据结构
让我说这是加州大学伯克利分校的一个硬件项目,所以如果你能给我一个提示而不是解决方案,那就太好了 问题是创建一个名为“YearlyRecord”的数据结构,该结构将一个单词映射到它在ngram文件中遇到的次数。以下是限制条件Java 恒定时间排序的多重映射数据结构,java,algorithm,data-structures,Java,Algorithm,Data Structures,让我说这是加州大学伯克利分校的一个硬件项目,所以如果你能给我一个提示而不是解决方案,那就太好了 问题是创建一个名为“YearlyRecord”的数据结构,该结构将一个单词映射到它在ngram文件中遇到的次数。以下是限制条件 获取计数必须为O(1) 获取映射的数量必须为O(1) “put”必须为平均值O(对数n) 获得“等级”必须是O(1) 计数,它以递增的顺序提供所有计数的数据结构 words,它按计数顺序提供所有单词的数据结构 注意:“排名”是一个函数,它接受一个单词并告诉我它的排名(例如
- 获取计数必须为O(1)
- 获取映射的数量必须为O(1)
- “put”必须为平均值O(对数n)
- 获得“等级”必须是O(1)
- 计数,它以递增的顺序提供所有计数的数据结构
- words,它按计数顺序提供所有单词的数据结构
1
,2
,3
,4
),这是基于它的出现次数
到目前为止,我的解决方案是:
- Hashmap(word->count)提供了O(1)getCount操作和 O(1)尺寸操作
- 创建一个私有的内部类,该类实现基于hashmap中出现次数进行比较的Comparator。然后使用 这个比较器作为单词树集的输入。这提供了 “单词”集合,我们可以在O(1)时间内返回
- 再做一个计数树集。这将按递增顺序提供计数的O(1)返回
- 这就是我被困的地方。很明显,排名也应该是一张地图。我在树集中有按等级递增顺序排列的单词,但没有要映射的索引
计数
和单词
性能的限制,是吗?不,唯一的限制是计数、大小和等级。至少是明确的。使“counts”和“words”保持不变是我的倡议。作为提醒,单词计数的检索是通过hashmapYes完成的,但是当您返回此类数据结构时,您应该返回内部结构的副本,或者使用引用的人可以更改它,然后您下次将给出一个不好的数据结构。