java - 双端队列

标签 java arrays deque

我正在编写自己的双端队列/双端队列程序。我似乎无法弄清楚在数组中从哪里开始。可以说我有一个大小为 6 的数组,写了一个 push 方法插入左边,一个插入右边。但是将项目推到索引 0 处并没有多大意义,因为我必须立即处理环绕。

经过一番研究,我发现如果我有一个空数组,那么第一项会被推到数组的中间,这取决于我想将元素推到数组左侧还是右侧的位置,最好是从中间工作?我只是想知道这是否是要走的路。

最佳答案

据我了解,您可以循环使用该数组。存储两个整数,存储开始索引和结束索引;并移动它们而不是移动数组中的元素。当你到达任一端时,只需换到另一端继续(在计算中使用 % length)。通过这种方式,您可以从任何地方开始,而无需移动元素。有点像Circular Buffers .

关于java - 双端队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22106907/

相关文章:

python - 双端队列按索引删除项目

c++ - 如何查找 std::deque 是否持有给定对象?

java - 如何从类型为 java.util.Date 的 JavaScript 对象返回?

java - 如何最好地编写以下代码?可行吗?请看说明

c++ - 查找随机数组中各个行和列的平均值

c++ - 优化只有 3 个不同值的数组?如何设计?

java - 为什么转换JSON RESTful Webservice后,POJO中的某些变量等于null?

java - 如何在 java 8 中使用 IntelliJ 中的集合工厂方法

java - 从行列表中获取数组?

python - 从python中的 'heapq'和 'deque'继承?