【发布时间】:2019-10-28 20:48:37
【问题描述】:
我正在尝试找到一种方法来实现高效的clear 以在恒定时间内清除循环数组队列。
我试过Array.fill() 并用null 值填充数组,但它仍然必须通过数组,这意味着 O(n)。
【问题讨论】:
-
请考虑这样一个事实,即如果队列中的任何给定位置超出
head和tail指针的范围,您实际上并不需要关心它。因此,如果您只是将两个指针移回数组的第一个元素并将该元素清空,就实际功能而言,这与清除队列中的值没有区别。 -
@Jordan 我不会这么说的。如果您真的想清除数组以便(可能是重量级)对象可以被垃圾收集,那么您描述的行为不是您想要的。
-
@Jordan 事实上,如果你不清空数组中的引用,这可能是内存泄漏。想象一个对象保留对大对象的引用,它将保留在数组中并防止被引用的对象被 GC 收集。