德克 |第一套(介绍和应用)
Deque或Double Ended Queue是Queue数据结构的通用版本,允许在两端插入和删除。
Deque 上的操作:
主要对队列进行以下四个基本操作:
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。
insertFront() :在 Deque 的前面添加一个项目。
insertLast() :在 Deque 的后面添加一个项目。
deleteFront() :从 Deque 前面删除一个项目。
deleteLast() :从 Deque 后面删除一个项目。
除了以上操作,还支持以下操作
getFront() :从队列中获取前项。
getRear() :从队列中获取最后一项。
isEmpty() : 检查 Deque 是否为空。
isFull() : 检查 Deque 是否已满。
Deque的应用:
由于 Deque 同时支持堆栈和队列操作,因此可以同时使用。 Deque 数据结构支持 O(1) 时间内的顺时针和逆时针旋转,这在某些应用程序中很有用。
此外,使用 Deque 可以有效解决需要删除和/或添加两端元素的问题。例如,请参阅所有大小为 k 的子阵列的最大值问题,0-1 BFS 和查找访问所有汽油泵的第一个循环。
有关 A-Steal 作业调度算法的另一个示例,请参阅 wiki 页面,其中 Deque 用作两端都需要删除操作。
语言支持:
C++ STL 提供了作为 std::deque 的 Deque 实现, Java提供了 Deque 接口。有关更多详细信息,请参阅此内容。
Java中的双端队列
Python中的双端队列
执行:
Deque 可以使用双向链表或循环数组来实现。在这两种实现中,我们都可以在 O(1) 时间内实现所有操作。我们很快就会讨论 Deque 数据结构的 C/C++ 实现。