leetcode.cn/problems/de…
重点解析

代码实现
class MyCircularDeque {
int[] deque;
int size, limit, l, r;
public MyCircularDeque(int k) {
deque = new int[k];
limit = k;
l = r = size = 0;
}
public boolean insertFront(int value) {
if (isFull()) {
return false;
}
if (isEmpty()) {
l = r = 0;
deque[0] = value;
} else {
l = l == 0 ? (limit - 1) : (l - 1);
deque[l] = value;
}
size++;
return true;
}
public boolean insertLast(int value) {
if (isFull()) {
return false;
}
if (isEmpty()) {
l = r = 0;
deque[0] = value;
} else {
r = r == (limit - 1) ? 0 : (r + 1);
deque[r] = value;
}
size++;
return true;
}
public boolean deleteFront() {
if (isEmpty()) {
return false;
}
l = l == (limit - 1) ? 0 : (l + 1);
size--;
return true;
}
public boolean deleteLast() {
if (isEmpty()) {
return false;
}
r = r == 0 ? (limit - 1) : (r - 1);
size--;
return true;
}
public int getFront() {
return isEmpty() ? -1 : deque[l];
}
public int getRear() {
return isEmpty() ? -1 : deque[r];
}
public boolean isEmpty() {
return size == 0;
}
public boolean isFull() {
return size == limit;
}
}