【发布时间】:2020-06-29 21:14:09
【问题描述】:
这是一个 leetcode 问题。完整问题在这里:https://leetcode.com/problems/implement-queue-using-stacks/solution/
这是完整的解决方案。
class MyQueue:
def __init__(self):
self.s1 = []
self.s2 = []
def push(self, x):
#Time complexity = O(1)
#Space complexity = O(1)
self.s1.append(x)
def pop(self):
#Time complexity = O(n)
#Space complexity = O(n)
self.peek()
return self.s2.pop()
def peek(self):
#Time complexity = O(1)
#space complexity = O(1)
if self.s2 == []: #if s2 is empty
while self.s1 != []: #while s1 is not empty
self.s2.append(self.s1.pop()) #s2 takes in all the s1 values | i don't understand this line???
return self.s2[-1]
def empty(self):
#Time complexity = O(1)
#Space complexity = O(1)
return self.s1 == [] and self.s2 == []
代码运行良好,但我不明白这一行:
self.s2.append(self.s1.pop())
这是来自这个函数:
def peek(self):
if self.s2 == []: #if s2 is empty
while self.s1 != []: #while s1 is not empty
self.s2.append(self.s1.pop()) #s2 takes in all the s1 values
return self.s2[-1]
我正在尝试按照代码进行操作,但不明白 self.s1.pop() 实际上如何返回任何内容?
另外,self.s1.pop() 与 self.pop() 的功能有何不同
提前非常感谢!
【问题讨论】:
标签: python recursion stack queue