Design Circular Queue LeetCode solution in Java
1class MyCircularQueue {23private int front;4private int rear;5private int[] arr;6private int cap;78private int next(int i) { // to get next idx after i in circular queue9return (i + 1) % cap;10}1112private int prev(int i) { // to get prev idx before i in circular queue13return (i + cap - 1) % cap;14}1516// rest is as simple as implmenting a normal queue using array.17public MyCircularQueue(int k) {18arr = new int[k];19cap = k;20front = -1;21rear = -1;22}2324public boolean enQueue(int value) {25if (isFull()) return false;26if (front == -1) {27front = 0;28rear = 0;29arr[rear] = value;30return true;31}32rear = next(rear);33arr[rear] = value;34return true;35}3637public boolean deQueue() {38if (isEmpty()) return false;39if (front == rear) {40front = -1;41rear = -1;42return true;43}44front = next(front);45return true;46}4748public int Front() {49if (front == -1) return -1;50return arr[front];51}5253public int Rear() {54if (rear == -1) return -1;55return arr[rear];56}5758public boolean isEmpty() {59return front == -1;60}6162public boolean isFull() {63return front != -1 && next(rear) == front;64}65}