Это вопрос кода 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 == []
Код работает нормально, но я не понимаю эту специфику c строка :
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()
Заранее большое спасибо!