首页 > 其他分享 >【LeetCode 刷题】栈与队列-基础操作

【LeetCode 刷题】栈与队列-基础操作

时间:2025-01-21 11:28:01浏览次数:3  
标签:队列 self pop main out LeetCode def 刷题

此博客为《代码随想录》字符串章节的学习笔记,主要内容为栈与队列基础操作相关的题目解析。

文章目录

232. 用栈实现队列

题目链接

class MyQueue:

    def __init__(self):
        self.in_s, self.out_s = [], [] 
        
    def push(self, x: int) -> None:
        self.in_s.append(x)

    def pop(self) -> int:
        self.move()
        return self.out_s.pop()

    def peek(self) -> int:
        self.move()
        return self.out_s[-1]

    def empty(self) -> bool:
        return not self.in_s and not self.out_s

    def move(self):
        if not self.out_s:
            while self.in_s:
                self.out_s.append(self.in_s.pop())
  • list.append(obj):(参数为元素)在列表末尾添加新的对象
  • list.pop([index=-1]):(参数为下标)移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
  • 特点:
    • 两个栈,一个作为输入,一个作为输出
    • peekpop 操作会触发元素从 in_sout_s 的转移
    • 两个栈均为空时,表明模拟的队列为空

225. 用队列实现栈

题目链接

class MyStack:

    def __init__(self):
        self.main_q, self.sub_q = [], []

    def push(self, x: int) -> None:
        self.sub_q.append(x)
        while self.main_q:
            self.sub_q.append(self.main_q.pop(0))
        self.main_q, self.sub_q = self.sub_q, self.main_q

    def pop(self) -> int:
        return self.main_q.pop(0)

    def top(self) -> int:
        return self.main_q[0]

    def empty(self) -> bool:
        return not self.main_q
  • 特点:
    • 两个队列,一个为主队列,另一个仅仅为辅助队列,类似于临时变量作用(因此一个队列也可求解)
    • push 操作会触发元素从 main_qsub_q 的转移
    • 主队列为空时,表明模拟的栈为空

标签:队列,self,pop,main,out,LeetCode,def,刷题
From: https://blog.csdn.net/Bran_Liu/article/details/145276737

相关文章

  • 232. 用栈实现队列
    题目没想透的一点:对于要实现的队列的pop操作,其实先看输出栈是否为空,如果不为空,直接从输出栈弹出即可,如果为空,再将输入栈的元素依次压入输出栈(注意是全部压入输出栈,毕竟输入栈的最下面的那个元素其实是我们想要弹出的元素),再弹出输出栈的栈顶元素。卡哥思路讲得很清晰,跟着卡哥代码......
  • 单调队列:实用而好写的数据结构
    前言|Preface这几天连续做了好几道单调队列的题,难度从绿到蓝不等,摸索出了一些经验,也总结了一些单调队列的特点和规律。概述|Outline顾名思义,单调队列的重点分为「单调」和「队列」。「单调」指的是元素的「规律」——递增(或递减)。「队列」指的是元素只能从队头和队尾进......
  • 数据结构与算法之递归: LeetCode 39. 组合总和 (Ts版)
    组合总和https://leetcode.cn/problems/combination-sum/description/描述给你一个无重复元素的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的所有不同组合,并以列表形式返回。你可以按任意顺序返回这些组合candid......
  • AI刷题-病毒在封闭空间中的传播时间
    目录问题描述输入格式输出格式解题思路:问题理解数据结构选择算法步骤代码实现: 1.初始化: 2.设置边界条件: 3.判断 4.更新:  5.返回 最终的实现代码如下:运行结果:  以后我想试着一篇博客就写一道题解,尽可能的地把题解思路讲清楚(ps:因为我昨天看之前写的......
  • Mimikyu靶场刷题记录
     目录靶场地址: 综合漏洞练习靶场-极核::CTFPass01SourcePass02ResponsePass03GetPass04RobotsPass05BackupPass06CookiePass07HTML整体结构元数据部分页面内容关于 disabled 属性pass08xff_refererpass09PHP一、代码功能概述二、代码逐行分析p......
  • 【刷题实录之二叉树】leecode429. N 叉树的层序遍历(层序遍历)
    题目:给定一个N叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输入是用层序遍历,每组子节点都由null值分隔。题解:本体是层序遍历的变形,只需要将“左右孩子入队”变成“所有孩子入队”即可,需对结点数据结构有深入把握。代码(C++):classSolution{public:......
  • 2025 刷题计划 - 线段树
    2025刷题计划-线段树A.P3313[SDOI2014]旅行树剖板子题,开\(C\)棵线段树即可。你可能会说开不下?动态开点不就完了。B.P3924康娜的线段树有意思的一道题,貌似\(O(n\logn)\)解法比\(O(n)\)更难?我实现不出来。首先易得期望的计算方式即为:设当前节点\(x\)的深度为......
  • 【第一天】零基础入门刷题Python-算法篇-数据结构与算法的介绍(持续更新)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、Python数据结构与算法的详细介绍1.基本概念2.Python中的数据结构1.列表(List)2.元组(Tuple)3.字典(Dictionary)4.集合(Set)5.字符串(String)3.Python中的常用算法1.排序算法2.搜索算法3.递......
  • StackOrQueueOJ2:用队列实现栈
    目录题目描述思路分析创建由队列实现的栈出栈压栈销毁代码展示题目描述原题:225.用队列实现栈思路分析这题我们需要知道栈和队列的差异,栈是先进后出,但队列是先进先出;出队列和出栈有冲突:创建由队列实现的栈这里我们要注意:如果使用MyStack*st创建,那是局部变......
  • 【leetcode 22】541. 反转字符串II
    思路:其实在遍历字符串的过程中,只要让i+=(2*k),i每次移动2*k就可以了,然后判断是否需要有反转的区间。因为要找的也就是每2*k区间的起点,这样写,程序会高效很多。classSolution{publicStringreverseStr(Strings,intk){char[]ch=s.toCh......