LeetCode-剑指 Offer 09. 用两个栈实现队列
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )
思路:
- 1.python使用列表实现两个栈int, out
- 2.入队的时候对int列表(栈)append
- 3.出队的时候判断out是否为空,不为空,将out列表(栈)最后一位保存之后,更新out,同时返回保存值
- 4.出队时候out为空,需要将int全部倒放入out中;
- 4.1如果此时out还是空,也就是int为空,返回-1,表示没有入队的情况下直接出队的;
- 4.2如果此时out不为空,执行和3同样的操作,由于这两步操作相同,所以放在了if外层
class CQueue:
def __init__(self):
self.int = []
self.out = []
def appendTail(self, value: int) -> None:
self.int.append(value)
def deleteHead(self) -> int:
if len(self.out) == 0:
self.out = [self.int[i] for i in range(len(self.int)-1, -1, -1)]
self.int = []
if len(self.out) == 0:
return -1
# else:
# num = self.out[-1]
# self.out = self.out[0:-1]
# return num
# else:
# num = self.out[-1]
# self.out = self.out[0:-1]
# return num
# 上面的注释代码复杂,但是使用注释代码更容易理解
num = self.out[-1]
self.out = self.out[0:-1]
return num
# Your CQueue object will be instantiated and called as such:
# obj = CQueue()
# obj.appendTail(value)
# param_2 = obj.deleteHead()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix