leetcode队列
文章平均质量分 67
岗岗ganggang
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 37. 序列化二叉树python
题目描述:题解:参考:力扣二叉树的前 中 后序遍历对应的二叉树不唯一,完整表示二叉树需要把null空节点也记录。二叉树的序列化:借助队列1.创建一个队列queue,初始时只有root节点,创建一个list,初始为空,保存序列化结果。2.每次取出队列中第一个节点node,判断node是否为空节点,如果不是则将node.val加入result,然后将node的左右子节点加入队列,如果node为空节点,则直接在result中添加null。以题目示例中的二叉树为例:...原创 2021-12-23 16:17:52 · 843 阅读 · 0 评论 -
剑指 Offer 59 - II. 队列的最大值python
题目描述:题解:参考:力扣思路:维护两个队列,一个队列queue记录正常的出队入队操作,另一个maxqueue记录最大值。1.pushback时,将value加入queue,如果maxqueue[-1]小于value,则将maxqueue中所有小于value的数字出队,然后再将value加入maxqueue,否则直接入队。2.maxvalue总在maxqueue[0],如果popleft时queue[0]=maxvalue[0],则将maxvalue[0]出队。class M.原创 2021-12-20 11:26:23 · 308 阅读 · 0 评论 -
剑指 Offer 32 - I. 从上到下打印二叉树python java
题目描述:题解:1.创建一个nodeque(用list表示),记录搜索节点,初始只有root一个节点,用noderes记录最终结果。2.每次取出nodeque中的第一个节点node,将node.val加入noderes。如果node左子节点存在,将左子节点加入nodeque,如果右子节点存在将其加入nodeque,然后从nodeque中删除node节点.class Solution(object): def levelOrder(self, root): nod原创 2021-11-29 15:53:04 · 457 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列python
题目描述:题解:两个栈底层还是采用队列实现,但需要使队列保持先进先出特性来模拟栈。1.初始化两个栈stack1 stack2,stack1模拟队列,stack2辅助。2.向队列末尾添加元素,可以直接使用append实现。3.删除stack1头部元素实现方式:先将stack1中全部元素依次pop后添加到Stack2,此时stack2最顶端元素就是stack1的头部元素,用result记录stack2.pop()结果,然后再将stack2剩余元素依次放回stack1,保持stack1与.原创 2021-11-24 10:00:13 · 130 阅读 · 0 评论 -
leetcode 1352. 最后 K 个数的乘积python
题目描述:题解:解法1(未通过):最开始把这个题目想的简单了, 通过list实现,add操作对应list的append操作,productOfNumbers则将list最后k个元素相乘返回乘积。class ProductOfNumbers(object): def __init__(self): self.numlist = [] def add(self, num): self.numlist.append(num)原创 2021-09-14 17:15:26 · 145 阅读 · 0 评论 -
leetcode 1700. 无法吃午餐的学生数量 python
题目描述:题解:对比students[0]和sandwiches[0],如果相等,则分别pop(0)如果students[0]和sandwiches[0]不相等,则将students[0]放入students最后,sandwiches[0]放入sandwiches最后。直到students sandwiches为空或students[0]与sandwiches[0]不相等的次数等于students中元素数量。class Solution(object): def c..原创 2021-09-14 16:12:10 · 248 阅读 · 0 评论 -
leetcode 232. 用栈实现队列python
题目描述:题解:使用python中的list作为栈模拟队列,可以使用list的append pop作为栈的push pop操作。初始化两个队列stack1 stack2,stack1用于模拟队列,stack2用作辅助。1.队列的push操作可以可以直接通过stack1.append操作实现。2.队列的pop操作即弹出队列的第一个元素(第一个加入的元素): 将stack1的除第一个元素(栈最底部元素)之外全部pop后push入stack2,stack1栈底元。保存在res中,然后再..原创 2021-09-14 10:41:27 · 142 阅读 · 0 评论 -
leetcode 225. 用队列实现栈 python
题目描述:题解:在python中使用list模拟栈的push pop top enpty操作,只可以使用list的append pop(0)等基本操作。创建两个list q1 q2,q1记录栈中的内容,q2作为辅助。1.栈的push操作可以直接用list的append实现。2.栈的pop操作将q1中除最后一个元素外全部弹出放入q2,然后将q1最后一个元素记录在res中,交换q1 q23.栈的top操作和pop类似,只是q1中的最后一个元素也需要加入q2。4.empty可以原创 2021-09-14 10:08:16 · 169 阅读 · 0 评论