用于恒定时间排名的MultiMap数据结构

时间:2015-05-30 16:18:37

标签: java algorithm data-structures

我只想说这是加州大学伯克利分校的一个硬件项目,所以如果你能给我一个提示而不是解决方案,那就太好了。

问题是创建一个名为“YearlyRecord”的数据结构,它将单词映射到ngram文件中遇到的次数。以下是限制。

  • 获取计数必须是 O(1)
  • 获取映射数必须为 O(1)
  • “put”必须平均 O(log n)
  • 获得“等级”必须是 O(1)
  • 计数,它按递增顺序提供所有计数的数据结构
  • 单词,按计数顺序提供所有单词的数据结构

注意:“rank”是一个接受单词并告诉我其排名的函数(例如1234),它基于关于我们拥有它的次数。

到目前为止我的解决方案:

  • Hashmap(word - > count)提供 O(1) getCount操作和 O(1)尺寸操作
  • 创建一个实现Comparator的私有内部类,它根据hashmap中出现的次数进行比较。然后用 这个比较器作为TreeSet的输入。这提供了 “words”集合,我们可以在 O(1)时间返回。
  • 制作计数的另一个TreeSet。这提供了 O(1)按递增顺序返回的计数。
  • 排名:这是我被困的地方。很明显,等级也应该是地图。我在TreeSet中的单词按等级递增顺序,但没有要映射到的索引。

0 个答案:

没有答案