641. 设计循环双端队列

💡 原文英文,约1100词,阅读约需4分钟。
📝

内容提要

设计一个循环双端队列类 `MyCircularDeque`,支持初始化大小为 `k`,在队列前后插入或删除元素,获取前后元素,检查队列是否为空或已满。使用数组实现,头尾指针实现循环,操作时间复杂度为 O(1),空间复杂度为 O(k)。

🎯

关键要点

  • 设计一个循环双端队列类 MyCircularDeque,支持初始化大小为 k。

  • 支持在队列前后插入或删除元素,获取前后元素。

  • 检查队列是否为空或已满。

  • 使用数组实现,头尾指针实现循环。

  • 所有操作的时间复杂度为 O(1),空间复杂度为 O(k)。

  • 初始化时,使用大小为 k 的数组,所有值初始为 -1。

  • 前后指针初始化为 0,size 用于跟踪当前元素数量。

  • insertFront 方法检查队列是否已满,若未满则在前面插入元素。

  • insertLast 方法检查队列是否已满,若未满则在后面插入元素。

  • deleteFront 方法检查队列是否为空,若不为空则从前面删除元素。

  • deleteLast 方法检查队列是否为空,若不为空则从后面删除元素。

  • getFront 方法返回前指针指向的元素,若队列为空则返回 -1。

  • getRear 方法返回后指针前的元素,若队列为空则返回 -1。

  • isEmpty 方法返回队列是否为空。

  • isFull 方法返回队列是否已满。

➡️

继续阅读