232. Implement Queue using Stacks
https://www.youtube.com/watch?v=ma1S6vtkw9I https://www.youtube.com/watch?v=jf0NTM_JS0w Implement the following operations of a queue using stacks. * push(x) -- Push element x to the back of queue. * pop() -- Removes the element from in front of queue. * peek() -- Get the front element. * empty() -- Return whether the queue is empty. Example: MyQueue queue = new MyQueue(); queue.push(1); queue.push(2); queue.peek(); // returns 1 queue.pop(); // returns 1 queue.empty(); // returns false Notes: * You must use only standard operations of a stack -- which means only push to top, peek/pop from top, size, and is empty operations are valid. * Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack. * You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue). class MyQueue { Stack<Integer> stack1; Stack<Integer> stack2; /** Initialize your data structure here. */ public MyQueue() { stack1 = new Stack<>(); stack2 = new Stack<>(); } /** Push element x to the back of queue. */ public void push(int x) { stack1.push(x); } /** Removes the element from in front of queue and returns that element. */ public int pop() { if(stack2.isEmpty()){ while(!stack1.isEmpty()){ stack2.push(stack1.pop()); } } return stack2.pop(); } /** Get the front element. */ public int peek() { if(stack2.isEmpty()){ while(!stack1.isEmpty()){ stack2.push(stack1.pop()); } } return stack2.peek(); } /** Returns whether the queue is empty. */ public boolean empty() { return stack1.isEmpty() && stack2.isEmpty(); } }
posted on 2018-11-06 10:01 猪猪🐷 阅读(75) 评论(0) 收藏 举报
浙公网安备 33010602011771号