我正在寻找一种数据结构(或多个结构),它可以让我保留一个有序的整数列表,没有重复,索引和值在同一范围内。
我需要四个主要操作才能高效,按重要性粗略排序:
- 从给定索引中获取值
- 查找给定值的索引
- 在给定索引处插入值
- 删除给定索引处的值
使用一个数组,我在 O(1) 处有 1,但 2 是 O(N),插入和删除是昂贵的(我相信也是 O(N))。
链表有 O(1) 的插入和删除(一旦你有了节点),但 1 和 2 是 O(N),因此否定了收益。
我尝试保留两个数组 a[index]=value 和 b[value]=index,它们将 1 和 2 变为 O(1),但将 3 和 4 变为更昂贵的操作。
有没有更适合这个的数据结构?