해결 방법 :
- 큐의 FIFO이고 스택 최종 출력이, 우리가 제 아웃 큐 후방 요소의 효과를 달성 할 수 있도록 구성 요소가 밖으로 여기서 대향 위치에 둘,
제 생각에, 우리는 요구 큐 요소에서 구현 반전 동작
하지만, 완전하게 큐의 마지막 요소를 넣어, 반대로 실현되지 않은이 문제를 해결하는 아이디어는, 당신은 팀의 머리에 이동할 수 있습니다, 당신은 같은 효과 스택 (LIFO)을 달성 할 수 그래서; - 우리는 스택의 요소 요소의 하단을 위해 팀 머리를 달성 할 필요가있다.
방법 하나 : 우리는 달성하기 위해 두 개의 큐를 선택했습니다
: 기본 아이디어는 그대로 다음
) 요소에 현재의 팀이 팀 프로세스 큐에 X 있다고 가정 달성하기 위해 :(
- 우리는 달성하기 위해 두 개의 큐 큐 및 도움말을 사용, 큐 도움이 보조 큐이며, 주요 큐입니다;
- 우리는 순차적 인 요소들로 구성된 팀이 큐에 넣어 도움이되는 빈 때까지 큐 요소에 대한 팀이었다;
- 큐가 비어 있기 때문에 팀에 현재의 요소 x는 스택 (첫 번째 팀이되었다, 그래서 다음 큐가이 시간에 비어있는, 우리가 필요로하는 요소의 팀에 현재의 팀을 다시 입력 X,,, 그것은 스택의 맨 아래의 요소 ) 및 팀의 큐 우선 순위에 이때, 우리가 LIFO 스택의 당량을 달성한다.
- 큐 및 복사 요소에서 추가 지원 후 올 수 있습니다.
다음과 같이 코드입니다 :
class MyStack:
def __init__(self):
"""
Initialize your data structure here.
"""
self.queue = []
self.help = []
def push(self, x):
"""
Push element x onto stack.
"""
while len(self.queue) > 0:
self.help.append(self.queue.pop(0))
self.queue.append(x)
while len(self.help) > 0:
self.queue.append(self.help.pop(0))
def pop(self) :
"""
Removes the element on top of the stack and returns that element.
"""
de = self.queue.pop(0)
return de
def top(self):
"""
Get the top element.
"""
de = self.queue[0]
return de
def empty(self) -> bool:
"""
Returns whether the stack is empty.
"""
if len(self.queue) == 0:
return True
return False
방법 2 : 하나의 큐가 달성 :
기본 개념
- 큐 프로세스 구현 푸시;
- 먼저 큐 (X)의 현재 원소 들어간다;
- 이어서 대기열 길이의 현재 길이를 얻는다;
- 길이를 1 없음 디큐의 길이; 마지막 순서로 큐 디큐 현재 대기열 성분, 팀의 각 요소의 길이의 감소 된 값을 다시 입력 대기열이 시간에 큐 요소의 첫 번째 요소이며 X, 프로세스가 LIFO 효과가 실현되도록 팝.
다음과 같이 코드입니다 :
class MyStack:
def __init__(self):
"""
Initialize your data structure here.
"""
self.queue = []
def push(self, x):
"""
Push element x onto stack.
"""
self.queue.append(x)
length = len(self.queue)
while length > 1:
self.queue.append(self.queue.pop(0))
length -= 1
def pop(self) :
"""
Removes the element on top of the stack and returns that element.
"""
de = self.queue.pop(0)
return de
def top(self):
"""
Get the top element.
"""
de = self.queue[0]
return de
def empty(self) -> bool:
"""
Returns whether the stack is empty.
"""
if len(self.queue) == 0:
return True
return False