思路
共有两个栈,分别为stack1和stack2。
执行push操作,则元素node压入stack1。
执行pop操作,若stack1中有多个元素,则依次将stack1中元素pop并压入stack2中,并pop。若执行pop操作时stack2中没有元素,则从stack1中pop后push进stack2,并将stack1清空(否则会造成冗余),而后pop stack2中的元素,若stack2中有元素则直接 pop stack2中的元素。
代码
class Solution:
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
self.stack1.append(node)
def pop(self):
if len(self.stack2) is not 0:
res = self.stack2.pop()
return res
if len(self.stack2) is 0 and len(self.stack1) > 0:
self.stack2 += self.stack1[::-1]
self.stack1.clear()
res = self.stack2.pop()
return res
执行操作
if __name__ == '__main__':
s = Solution()
s.push(1) # 1进队列
s.push(2) # 2进队列
s.push(3) # 3进队列
print(s.pop()) # 1出队列
print(s.pop()) # 2出队列
s.push(4) # 4进队列
print(s.pop()) # 3出队列
s.push(5) # 5进队列
print(s.pop()) # 4出队列
print(s.pop()) # 5出队列
输出
1
2
3
4
5