这是一个最近的采访问题。请设计一个具有插入,删除,在o(1)时间复杂度中随机的数据结构,该数据结构可以是基本数据结构,例如数组,可以是基本数据结构的修改,也可以是基本数据的组合结构。
将数组与元素的哈希映射组合到数组索引。
插入可以通过添加到数组并添加到哈希映射中来完成。
删除可通过以下方法完成:首先在哈希图中查找并删除数组索引,然后将最后一个元素与数组中的该元素交换,适当地更新先前最后一个元素的索引,并将数组大小减小一个(删除最后一个)元件)。
可以通过从数组返回随机索引来获得随机值。
所有运算取O(1)。
好吧,实际上,它是通过预期的(从预期的哈希冲突)分摊(通过调整数组的大小)O(1),但是足够接近。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句