我正在编写自己的双端队列/双端队列程序。我似乎无法弄清楚数组中从哪里开始。可以说我有一个大小为6的数组,编写了一个push方法以向左插入,一个为向右插入。但是将项目推入索引0并没有多大意义,因为我必须立即处理环绕。
经过研究,我发现如果我有一个空数组,那么第一项将被推入数组的中间,并且根据要在数组左侧或右侧推入元素的位置而定,最好是工作从中间?我只是想知道这是不是要走的路。
最佳答案
据我了解,您可以循环使用该数组。存储两个整数,分别存储开始索引和结束索引;并移动它们而不是移动数组中的元素。当到达任一端时,只需将continu包装到另一端即可(在计算中使用% length
)。通过这种方式,您可以从任何位置开始,而无需移动元素。有点像Circular Buffers。
关于java - 双端队列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22106907/