Arrays 跟踪阵列的最高占用索引
我有一个数组,我经常(有效地随机)在其中添加和删除元素。是否有跟踪数组中最高占用索引的算法 现在我能想到的最好的办法是:Arrays 跟踪阵列的最高占用索引,arrays,algorithm,Arrays,Algorithm,我有一个数组,我经常(有效地随机)在其中添加和删除元素。是否有跟踪数组中最高占用索引的算法 现在我能想到的最好的办法是: 跟踪变量中最高占用索引(即HOI) 获取数组中的下一个可用索引时,请检查它是否高于HOI,如果是,请将该索引分配给HOI 删除项目时,如果该项目位于HOI索引,则从HOI向后扫描,直到找到占用的索引并将其分配给HOI 这应该可以,但它不是特别优雅,所以我想知道是否有人知道更清洁的解决方案,这在很大程度上取决于阵列的密度 对于至少中等密度的阵列,您的解决方案很好,因为下一项不会
这应该可以,但它不是特别优雅,所以我想知道是否有人知道更清洁的解决方案,这在很大程度上取决于阵列的密度 对于至少中等密度的阵列,您的解决方案很好,因为下一项不会太远 对于非常稀疏的数组,索引的二级数据结构可能是一个好主意(例如a) 您是否被阵列卡住了?你应该总是考虑复习你选择的数据结构。从这里开始,很难判断什么是最好的,因为我对你试图解决的问题了解得不够
或您可以考虑<强>您的解决方案稍微复杂的版本:< /强>
- 有一个最高索引的最大值为5(左右)的集合(排序数组很小就可以了)
- 在插入时,仅当其大于最小元素时,才将其添加到此集合中(如果最小元素包含5个以上的元素,则将其删除)
- 在删除时,从集合中删除(如果存在)。如果集合为空,则存储删除的索引
- 在获取最高值时,只需返回集合中的最大值。如果集合为空,则从存储的索引向后查找最大值(并将其添加到集合中)