昨晚八点多睡十一点多就醒了……估计一时半会儿睡不着了,干脆起来写一下。
232.用栈实现队列
- 题目链接:232.用栈实现队列
class MyQueue(object):
def __init__(self):
self.stack_in = []
self.stack_out = []
def push(self, x):
"""
:type x: int
:rtype: None
"""
self.stack_in.append(x)
def pop(self):
"""
:rtype: int
"""
print(self.stack_in)
for i in range(len(self.stack_in)-1):
self.stack_out.append(self.stack_in.pop())
result = self.stack_in.pop()
for i in range(len(self.stack_out)):
self.stack_in.append(self.stack_out.pop())
return result
def peek(self):
"""
:rtype: int
"""
for i in range(len(self.stack_in)-1):
self.stack_out.append(self.stack_in.pop())
result = self.stack_in.pop()
self.stack_in.append(result)
for i in range(len(self.stack_out)):
self.stack_in.append(self.stack_out.pop())
return result
def empty(self):
"""
:rtype: bool
"""
if self.stack_in or self.stack_out:
return False
else:
return True
# Your MyQueue object will be instantiated and called as such:
# obj = MyQueue()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.peek()
# param_4 = obj.empty()
- pop可以继续简化。
- stack_out pop空了才能继续往里添加元素
- 添加的时候要把stack_in的元素全部添加进来
def pop(self):
"""
:rtype: int
"""
if self.stack_out:
return self.stack_out.pop()
else:
for i in range(len(self.stack_in)-1):
self.stack_out.append(self.stack_in.pop())
return self.stack_in.pop()
def peek(self):
"""
:rtype: int
"""
result = self.pop()
self.stack_out.append(result)
return result
225. 用队列实现栈
- 题目链接:225. 用队列实现栈
class MyStack(object):
def __init__(self):
self.queue1 = []
self.queue2 = []
def push(self, x):
"""
:type x: int
:rtype: None
"""
if self.queue1:
self.queue1.append(x)
else:
self.queue2.append(x)
def pop(self):
"""
:rtype: int
"""
if self.queue2:
for i in range(len(self.queue2)-1):
self.queue1.append(self.queue2.pop(0))
return self.queue2.pop()
else:
for j in range(len(self.queue1)-1):
self.queue2.append(self.queue1.pop(0))
return self.queue1.pop()
def top(self):
"""
:rtype: int
"""
print(self.queue1)
print(self.queue2)
result = self.pop()
self.push(result)
return result
def empty(self):
"""
:rtype: bool
"""
if self.queue1 or self.queue2:
return False
else:
return True
# Your MyStack object will be instantiated and called as such:
# obj = MyStack()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.top()
# param_4 = obj.empty()