Reverse the first “K” elements of a queue
unknown
java
2 years ago
927 B
6
Indexable
/* Time complexity: O(N + K) Space complexity: O(N) where 'N' is the size of the queue and 'K' is the number of elements to be reversed. */ import java.util.Queue; import java.util.Stack; public class Solution { public static void reverse(Queue<Integer> queue, int k) { // If queue is empty or if k exceeds the size of the queue. if (queue.isEmpty() || k > queue.size()) { return; } if (k <= 0) { return; } Stack<Integer> stack = new Stack<Integer>(); // Push the first K elements into a Stack. for (int i = 0; i < k; i++) { stack.push(queue.peek()); queue.remove(); } while (!stack.isEmpty()) { queue.add(stack.peek()); stack.pop(); } // Remove the remaining elements and enqueue them at the end of the Queue. for (int i = 0; i < queue.size() - k; i++) { queue.add(queue.peek()); queue.remove(); } } }
Editor is loading...
Leave a Comment