반응형
# Problem
Implement a last in first out (LIFO) stack using only two queues. The implemented stack should support all the functions of a normal queue (push, top, pop, and empty). Implement the MyStack class:
Notes:
Constraints:
|
# My Answer
class MyStack:
def __init__(self):
self.data=[]
def push(self, x: int) -> None:
self.data.append(x)
def pop(self) -> int:
a = self.data.pop()
return a
def top(self) -> int:
"""
Get the top element.
"""
return self.data[-1]
def empty(self) -> bool:
"""
Returns whether the stack is empty.
"""
return len(self.data)==0
# Solution 1 - push() 할 때 큐를 이용해 재정렬
import collections
class MyStack:
def __init__(self):
self.q = collections.deque()
def push(self, x):
self.q.append(x)
# 요소 삽입 후 맨 앞에 두는 상태로 재정렬
for _ in range(len(self.q) - 1):
self.q.append(self.q.popleft())
def pop(self):
return self.q.popleft()
def top(self):
return self.q[0]
def empty(self):
return len(self.q) == 0
큐의 FIFO에 해당하는 연산만 사용해서 구현
큐는 데크로 선언
반응형
'Algorithm > LEET CODE ( 파이썬 알고리즘 인터뷰)' 카테고리의 다른 글
[LEET CODE] 622. Design Circular Queue (0) | 2021.03.29 |
---|---|
[LEET CODE] 232. Implement Queue using Stacks (0) | 2021.03.26 |
❗️[LEET CODE] 316. Remove Duplicate Letters (0) | 2021.03.23 |
[LEET CODE] 20. Valid Parentheses (0) | 2021.03.23 |
[LEET CODE] 92. Reverse Linked List II (0) | 2021.03.23 |