我正在寻找具有以下属性的数据结构:
它包含元素,由连续数字范围(例如,从1到k)索引,作为数组;
通过索引访问元素的速度尽可能快,希望O(1)操作;
在给定索引处插入元素是O(log n)操作。
我知道堆中的插入操作是O(log n)但我不知道如何在这里使用堆。我认为可以基于树构建所需的数据结构,但我还没有找到任何东西。
答案 0 :(得分:0)
你可以使用哈希表,因为你知道愤怒是1,2 .... k index。
因此,您需要实现一个为每个元素分配唯一索引的哈希函数。或者如果你有多个元素,那么你也需要处理哈希冲突,但根据你的问题规范,哈希表要好得多。
所以访问将是O(1) 并插入O(1)操作