这道题. - 力扣(LeetCode)涉及到了双端队列的知识点,这里记录一下。Deque是可以从头部或者尾部来进行操作的。
Deque
是 Java 中双端队列(Double Ended Queue)的接口,它继承自 Queue
接口。双端队列允许在两端进行插入和删除操作。Deque
接口提供了以下主要操作:
-
在队列头部插入元素:
addFirst(E e)
/offerFirst(E e)
: 在队列头部插入指定元素,如果空间不足则抛出异常或返回特殊值。offerFirst(E e)
: 在队列头部插入指定元素,如果空间不足则返回特殊值。
-
在队列尾部插入元素:
addLast(E e)
/offerLast(E e)
: 在队列尾部插入指定元素,如果空间不足则抛出异常或返回特殊值。offerLast(E e)
: 在队列尾部插入指定元素,如果空间不足则返回特殊值。
-
获取并移除队列头部元素:
removeFirst()
/pollFirst()
: 获取并移除队列头部元素,如果队列为空则抛出异常或返回特殊值。pollFirst()
: 获取并移除队列头部元素,如果队列为空则返回特殊值。
-
获取并移除队列尾部元素:
removeLast()
/pollLast()
: 获取并移除队列尾部元素,如果队列为空则抛出异常或返回特殊值。pollLast()
: 获取并移除队列尾部元素,如果队列为空则返回特殊值。
-
获取但不移除队列头部元素:
getFirst()
/peekFirst()
: 获取但不移除队列头部元素,如果队列为空则抛出异常或返回特殊值。peekFirst()
: 获取但不移除队列头部元素,如果队列为空则返回特殊值。
-
获取但不移除队列尾部元素:
getLast()
/peekLast()
: 获取但不移除队列尾部元素,如果队列为空则抛出异常或返回特殊值。peekLast()
: 获取但不移除队列尾部元素,如果队列为空则返回特殊值。
Deque
接口还提供了其他一些操作,如清空队列、获取队列大小等。需要注意的是,Deque
是一个接口,你可以使用 ArrayDeque
或 LinkedList
等类来实现该接口。