Problem
1212 - Double Ended Queue
1212 - Double Ended Queue
Idea Flow
Input_Constraint ~ All operation must be done in O(1)
Question Hints ~ Cake Walk
Conclusion ~ Just follow what problem statement tells.
Learnt lesson ~ Can try different DS other than deque.
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | package net.egork; import java.io.PrintWriter; import java.util.ArrayDeque; import java.util.Deque; import java.util.Scanner; public class L1212 { private static final String CASE = "Case"; private static final String SPACE = " "; private static final String COLON = ":"; private static final String PUSHLEFT = "pushLeft"; private static final String PUSHRIGHT = "pushRight"; private static final String POPLEFT = "popLeft"; private static final String POPRIGHT = "popRight"; private static final String QUEUEFULL = "The queue is full"; private static final String PSLEFT = "Pushed in left: "; private static final String PSRIGHT = "Pushed in right: "; private static final String QUEUEEMPTY = "The queue is empty"; private static final String POSLEFT = "Popped from left: "; private static final String POSRIGHT = "Popped from right: "; public void solve(int testNumber, Scanner in, PrintWriter out) { int testCase; testCase = in.nextInt(); for (int i = 1; i <= testCase; i++) { Deque<Integer> deque = new ArrayDeque<Integer>(); int sizeDeque, n; sizeDeque = in.nextInt(); n = in.nextInt(); String getLine; String command[]; System.out.println(CASE + SPACE + i + COLON); in.nextLine(); while (n > 0) { getLine = in.nextLine(); command = getLine.split(" "); if (command[0].equals(PUSHLEFT)) { if (checkFull(deque.size(), sizeDeque)) { System.out.println(QUEUEFULL); } else { deque.addFirst(Integer.parseInt(command[1])); System.out.println(PSLEFT + command[1]); } } else if (command[0].equals(PUSHRIGHT)) { if (checkFull(deque.size(), sizeDeque)) { System.out.println(QUEUEFULL); } else { deque.addLast(Integer.parseInt(command[1])); System.out.println(PSRIGHT + command[1]); } } else if (command[0].equals(POPLEFT)) { if (deque.isEmpty()) { System.out.println(QUEUEEMPTY); } else { System.out.println(POSLEFT + deque.getFirst()); deque.removeFirst(); } } else if (command[0].equals(POPRIGHT)) { if (deque.isEmpty()) { System.out.println(QUEUEEMPTY); } else { System.out.println(POSRIGHT + deque.getLast()); deque.removeLast(); } } n--; } } } private boolean checkFull(int size, int sizeDeque) { return size == sizeDeque; } } |