队列(Queue)\双端队列(Deque)

队列(Queue)\双端队列(Deque)

队列(Queue)

特点:
和栈不同,队列的最大特点是先进先出(FIFO),就好像按顺序排队一样。对于队列的数据,我们只允许在队尾查看和添加数据,在队头查看和删除数据。

实现:
可以借助双端队列来实现队列。双链表的头指针允许在队头查看和删除数据,而双链表的尾指针允许我们在队尾查看和添加数据。

应用场景:
当我们需要按照一定的顺序来处理数据,而该数据的数据量在不断变化的时候,则需要队列来帮助解题。在算法面试中,广度优先搜索是运用队列最多的地方。

双端队列(Deque)

特点:
双端队列和普通队列最大的不同在于,它允许我们在队列的头尾两端都能在O(1)的时间内进行数据的查看、添加和删除。

实现:
与队列相似,我们可以利用一个双链表实现双端队列。

应用场景:
双端队列最常用的地方就是实现一个长度动态变化的窗口或者连续区间,而动态窗口这种数据结构在很多题目中都有运用。

算法应用

LeetCoded第239题题解–滑动窗口最大值
LeetCoded第933题题解–最近的请求次数
LeetCoded第621题题解–任务调度器
LeetCoded第642题题解–设计循环双端队列

猜你喜欢

转载自blog.csdn.net/qq_38723677/article/details/109268172
今日推荐