#641
Design Circular Deque
specialist · 645 · lc medium +30 · 64.4% accepted · 1,684 likes · top 68%
Description
Design a fixed-capacity circular double-ended queue. Implement the MyCircularDeque class with: MyCircularDeque(k) to set capacity k; insertFront(value) and insertLast(value) to add elements at either end (return true on success); deleteFront() and deleteLast() to remove from either end (return true on success); getFront() and getRear() to peek at each end (return -1 when empty); and isEmpty() / isFull() status checks.
Example 1:
Input
["MyCircularDeque", "insertLast", "insertLast", "insertFront", "insertFront", "getRear", "isFull", "deleteLast", "insertFront", "getFront"]
[[3], [1], [2], [3], [4], [], [], [], [4], []]
Output
[null, true, true, true, false, 2, true, true, true, 4]
Example 2:
Explanation
MyCircularDeque myCircularDeque = new MyCircularDeque(3);
myCircularDeque.insertLast(1); // return True
myCircularDeque.insertLast(2); // return True
myCircularDeque.insertFront(3); // return True
myCircularDeque.insertFront(4); // return False, the queue is full.
myCircularDeque.getRear(); // return 2
myCircularDeque.isFull(); // return True
myCircularDeque.deleteLast(); // return True
myCircularDeque.insertFront(4); // return True
myCircularDeque.getFront(); // return 4
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40