232.用栈实现队列
链接 代码随想录
思路:重点是模拟出队列行为,需要两个栈,statck_in负责push, stack_out负责pop
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| class MyQueue:
def __init__(self):
"""in负责push,out负责pop"""
self.stack_in = []
self.stack_out = []
def push(self, x: int) -> None:
self.stack_in.append(x)
def pop(self) -> int:
if not self.stack_out:
while self.stack_in:
item = self.stack_in.pop()
self.stack_out.append(item)
return self.stack_out.pop()
def peek(self) -> int:
res = self.pop()
self.stack_out.append(res)
return res
def empty(self) -> bool:
return not self.stack_in and not self.stack_out
|
时间复杂度:O(n)
225. 用队列实现栈
leetcode
代码随想录
思路:使用一个队列来模拟栈。主要是pop操作,要想获取队列最后一个元素,需要把它前面的元素都pop出去,pop size-1次。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| class MyStack:
def __init__(self):
self.queue = []
def push(self, x: int) -> None:
self.queue.append(x)
def pop(self) -> int:
size = len(self.queue)
while size -1 > 0:
# pop size-1次
item = self.queue.pop(0)
self.push(item)
size -= 1
return self.queue.pop(0)
def top(self) -> int:
item = self.pop()
self.push(item)
return item
def empty(self) -> bool:
return not self.queue
|
时间复杂度:O(n)