Implement Stack using Queues
문제 설명
Implement a last-in-first-out (LIFO) stack using only two queues. The implemented stack should support all the functions of a normal stack (push, top, pop, and empty).
Implement the MyStack class:
- void push(int x) Pushes element x to the top of the stack.
- int pop() Removes the element on the top of the stack and returns it.
- int top() Returns the element on the top of the stack.
- boolean empty() Returns true if the stack is empty, false otherwise.
Notes:
- You must use only standard operations of a queue, which means that only push to back, peek/pop from front, size and is empty operations are valid.
- Depending on your language, the queue may not be supported natively. You may simulate a queue using a list or deque (double-ended queue) as long as you use only a queue's standard operations.
제한 사항
- 1 <= x <= 9
- At most 100 calls will be made to push, pop, top, and empty.
- All the calls to pop and top are valid.
입출력 예
Example 1:
Input ["MyStack", "push", "push", "top", "pop", "empty"] [[], [1], [2], [], [], []] Output [null, null, null, 2, 2, false] Explanation MyStack myStack = new MyStack(); myStack.push(1); myStack.push(2); myStack.top(); // return 2 myStack.pop(); // return 2 myStack.empty(); // return False
Python 코드
Python code
class MyStack: def __init__(self): self.q = deque() def push(self, x: int) -> None: self.q.append(x) def pop(self) -> int: for i in range(len(self.q) - 1): self.push(self.q.popleft()) return self.q.popleft() def top(self) -> int: return self.q[-1] def empty(self) -> bool: return len(self.q) == 0 # Your MyStack object will be instantiated and called as such: # obj = MyStack() # obj.push(x) # param_2 = obj.pop() # param_3 = obj.top() # param_4 = obj.empty()
* 참고 링크 : https://www.youtube.com/watch?v=rW4vm0-DLYc
C++ 코드
C ++ code
class MyStack { queue<int>q; public: /** Initialize your data structure here. */ MyStack() { } /** Push element x onto stack. */ void push(int x) { q.push(x); for (int i=0; i<q.size()-1; i++) { q.push(q.front()); q.pop(); } } /** Removes the element on top of the stack and returns that element. */ int pop() { int result=q.front(); q.pop(); return result; } /** Get the top element. */ int top() { return q.front(); } /** Returns whether the stack is empty. */ bool empty() { return q.empty(); } }; /** * Your MyStack object will be instantiated and called as such: * MyStack obj = new MyStack(); * obj.push(x); * int param_2 = obj.pop(); * int param_3 = obj.top(); * bool param_4 = obj.empty(); */
출처
https://leetcode.com/problems/implement-stack-using-queues/submissions/
'코딩테스트 > Leet Code' 카테고리의 다른 글
[Leet Code] 622. Design Circular Queue (0) | 2022.01.21 |
---|---|
[Leet Code] 232. Implement Queue using Stacks (0) | 2022.01.21 |
[Leet Code] 150. Evaluate Reverse Polish Notation (0) | 2022.01.21 |
[Leet Code] 43. Multiply Strings (0) | 2022.01.14 |
[Leet Code] 27. Remove Element (0) | 2022.01.14 |