【每日一题】641. 设计循环双端队列

641. 设计循环双端队列

数据结构模拟题

一个基本的实现,需要满足除构造函数以外复杂度为 O(k) 以外,其余操作均为 O(1)。

常规实现包含两种方式:数组实现 与 链表实现。

其中数组实现可以利用调用次数较小,开成调用次数 3 倍大小,然后从中间开始往两边存储,这样做就不用考虑下标边的界问题;而更为常规的解法是构造一个与限定空间 k 等大的数组,使用两下标并配合坐标转换来做,对于下标自增操作而言,只需要进行「加一取模」即可,而对于下标自减操作,由于考虑负值问题,需要进行「增加限定空间偏移后,进行减一再取模」。

链表实现则无须考虑额外的下标转换问题,但需要额外定义类。

使用 cnt 记录当前队列元素大小,使用 k 记录初始化时指定的空间大小。
【每日一题】641. 设计循环双端队列_第1张图片

  • 数组
class MyCircularDeque {
   
    int

你可能感兴趣的:(leetcode刷题,#,每日打卡题,链表,数据结构,算法)