標籤:logs 操作 iat stand note bsp and sem ble
題目:
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.
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).
題意及分析:使用stack實現queue的功能。這裡對於queue的push和enpty操作來說,和stack一樣就行。對於pop和peek,由於stack是pop和peek都是從隊尾來講,然而queue是要的這兩個操作時對於隊首的元素來講。所以這裡需要使用另一個stack來講當前stack倒序添加進新stack,對於最後一個元素 取值或者去掉,然後在將新stack倒序回去即可。具體看代碼:
代碼:
public class MyQueue { Stack<Integer> stack; /** Initialize your data structure here. */ public MyQueue() { stack = new Stack<>(); } /** Push element x to the back of queue. */ public void push(int x) { stack.push(x); } /** Removes the element from in front of queue and returns that element. */ public int pop() { Stack<Integer> tempStack=new Stack<>(); int lenght=stack.size(); for(int i=0;i<lenght-1;i++){ tempStack.push(stack.peek()); stack.pop(); } int res=stack.peek(); stack.pop(); int tempSize=tempStack.size(); for(int i=0;i<tempSize;i++){ stack.push(tempStack.peek()); tempStack.pop(); } return res; } /** Get the front element. */ public int peek() { Stack<Integer> tempStack=new Stack<>(); int lenght=stack.size(); for(int i=0;i<lenght-1;i++){ tempStack.push(stack.peek()); stack.pop(); } int res=stack.peek(); stack.pop(); tempStack.push(res); int tempSize=tempStack.size(); for(int i=0;i<tempSize;i++){ stack.push(tempStack.peek()); tempStack.pop(); } return res; } /** Returns whether the queue is empty. */ public boolean empty() { return stack.isEmpty(); }}/** * Your MyQueue object will be instantiated and called as such: * MyQueue obj = new MyQueue(); * obj.push(x); * int param_2 = obj.pop(); * int param_3 = obj.peek(); * boolean param_4 = obj.empty(); */
[LeetCode] 232. Implement Queue using Stacks Java