logo
Algorithms study cheatsheets

Coding interview 的 Queue cheatsheet

Queue 学习指南,包含练习题、技巧、时间复杂度与推荐资源

Introduction

Queue 是一种线性结构:在一端 enqueue 入队,在另一端 dequeue 出队。入队的一端叫 back/tail/rear,出队的一端叫 head/front。作为抽象数据类型,queue 可用 array 或 singly linked list 实现。

这种行为叫 FIFO(first in, first out)。名字来自现实生活中排队的类比。

Breadth-first search 常用 queue 实现。

Learning resources

Implementations

LanguageAPI
C++std::queue
Javajava.util.Queue.Use java.util.ArrayDeque
Pythonqueue
JavaScriptN/A

Time complexity

OperationBig-O
Enqueue/OfferO(1)
Dequeue/PollO(1)
FrontO(1)
BackO(1)
isEmptyO(1)

面试时需要注意

很多语言没有内置 Queue,候选人常用 array(JavaScript)或 list(Python)模拟。但如果把队头放左边,dequeue 会变成 O(n),因为要整体左移。遇到这种情况,建议说明这一点,并向面试官说明可以假设有 O(1) dequeue 的 queue 结构。

Corner cases

  • Empty queue
  • 只有 1 个元素
  • 只有 2 个元素

Essential questions

该 topic 必练题。

在掌握基础后推荐练习。

检测你的掌握度

3
1/3

Q1. Queue 的基本操作原则是?

相关练习题

Coding interview 的 Queue cheatsheet

暂无相关练习题