我正在寻找一个具有以下属性的数据结构。
- 存储
tuple<Double,Integer,Integer>
列表。仅按照double
排序,具有相同双倍值的两个元组被视为相同。 - 支持重复项。
- 需要能够以升序遍历。如果有重复项,则后添加的重复项应具有更高的顺序。
- 查找/插入快速
- 移除快速,请注意,移除始终遵循此模式
方法包括删除:
for(int i=list.size()-1;i>=0;i--){// assume list is in ascending order
if(list[j:i] can be merged){
remove list[j:i-1];
update list[i]'s two integers;
i = j-1;
}
}
我目前使用ArrayList并保持其排序。使用二分查找可以快速查找。然而,插入和删除将涉及大量的内存复制,例如在列表前面插入会导致所有元素都要移动。
j
是从哪里来的? - 101100j<i
,使得list[j:i]
可以合并。 - Wei Shij
在外部循环(在所示循环的外面)中是这样的:for(int j = 0; j < list.size(); j++)
? 另外,list[j:i]
是否使用类似Python的语法表示范围?它们什么时候可以合并?总体问题可能会导致我建议另一种结构。 - 101100