每日一题641. 设计循环双端队列
Posted 爱写Bug的王六六
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题641. 设计循环双端队列相关的知识,希望对你有一定的参考价值。
数据结构模拟题
一个基本的实现,需要满足除构造函数以外复杂度为 O(k) 以外,其余操作均为 O(1)。
常规实现包含两种方式:数组实现 与 链表实现。
其中数组实现可以利用调用次数较小,开成调用次数 3 倍大小,然后从中间开始往两边存储,这样做就不用考虑下标边的界问题;而更为常规的解法是构造一个与限定空间 k 等大的数组,使用两下标并配合坐标转换来做,对于下标自增操作而言,只需要进行「加一取模」即可,而对于下标自减操作,由于考虑负值问题,需要进行「增加限定空间偏移后,进行减一再取模」。
而链表实现则无须考虑额外的下标转换问题,但需要额外定义类。
使用 cnt 记录当前队列元素大小,使用 k 记录初始化时指定的空间大小。
- 数组
class MyCircularDeque
int
以上是关于每日一题641. 设计循环双端队列的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 641. 设计循环双端队列 / 1656. 设计有序流 / 302. 层数最深叶子节点的和
LeetCode 863. 二叉树中所有距离为 K 的结点/ 641. 设计循环双端队列 / 622. 设计循环队列