Practice Problem
- Queue
- Recursion
Remove the first k elements with recursion or a stack, then reinsert them in reversed order.
O(n)
O(k)
import java.util.*;
class Solution {
public Queue<Integer> reverseFirstK(Queue<Integer> queue, int k) {
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < k; i++) stack.push(queue.poll());
while (!stack.isEmpty()) queue.offer(stack.pop());
int size = queue.size();
for (int i = 0; i < size - k; i++) queue.offer(queue.poll());
return queue;
}
}