【leetcode 66题 之 9 用两个栈实现队列】

零基础开始刷leetcode,看FB大佬的这篇刷题笔记就够了! 年前有学员跟我抱怨,大学没好好好刷题,这这眼看就要春招了,leetcode就跟零基础一样。这种临时抱佛脚,没有进行过“系统性训练”的同学真的太多了。 遇到这种情况,你学历背景再好也没用,面试是非常容易挂的。 因为据我所知,大厂现在的考察风格就是对标北美的一些大厂,每一面都试图通过写代码,手撕算法题,来考察你的个人能力。所以如果你想快速上岸,当务之急是先拥有扎实的计算机基础,在闲暇之余一定要抓紧时... 阅读详情

题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

解析:

栈:先进后出

队列:先进先出

题目是用两个栈实现一个队列,可以根据栈操作两次先进后出,就可以使得Pop的顺序变成队列的Pop操作。

假设一组数:3、5、11、19、8、7、10

辅助工具:stack1、stack2

队列的push操作可直接利用list的append操作,这个别无二致。

队列的pop操作相对来说比较复杂,push操作把一组数压入stack1【3,5,11】,然后将stack1的所有数全部pop到stack2中【11,5,3】,使用stack2的pop操作即可完成队列的pop操作,即3出栈stack2。注意顺序,stack2主要用来pop,当把stack2中所有的数都pop完,再把stack1的数压入stack2。

代码如下:

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stack1 = []
        self.stack2 = []
    def push(self, node):
        self.stack1.append(node)
        
    def pop(self):
        # return xx
        size1 = len(self.stack1)
        size2 = len(self.stack2)
        if size1 == 0 and size2 == 0:
            return None
        elif size1 !=0 and size2 == 0:
            for i in range(size1):
                self.stack2.append(self.stack1.pop())
            return self.stack2.pop()
        else:
            return self.stack2.pop()

相关题目:

利用两个队列实现一个栈,完成栈的Push和Pop操作。 栈中的元素为int类型。

方法与上述相同。

1. Push操作可以使用append来实现。

2. Pop操作可以借助两个队列:queue1和queue2

使用queue1来接收Push的值,需要Pop的时候就把queue1的所有值入队列queue2,每次都需要互相交换两个队列的地址,这里设定每次的操作都是使用queue1执行Push操作,使用queue2执行Pop操作。

代码如下:

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.Queue1 = []
        self.Queue2 = []

    def push(self, node):
        self.Queue1.append(node)

    def pop(self):
        # return xx
        size1 = len(self.Queue1)
        size2 = len(self.Queue2)
        if size1 == 0 and size2 == 0:
            return None
        if size1 != 0:
            while(len(self.Queue1) != 1):
                self.Queue2.append(self.Queue1.pop(0))
            self.Queue2, self.Queue1 = self.Queue1, self.Queue2
            return self.Queue2.pop(0)

if __name__ == '__main__':
    solution = Solution()
    solution.push(3)
    solution.push(5)
    solution.push(11)
    print(solution.pop())
    solution.push(19)
    print(solution.pop())

 

Algorithm:【算法进阶之路】之算法面试刷题集合—数据结构知识和算法刷题及其平台、问题为导向的十大类刷题算法(数组和字符串、链表、栈和队列、二叉树、堆、图、哈希表、排序和搜索、回溯算法、枚举/递 ​ Algorithm:【算法进阶之路】之算法面试刷题集合—数据结构知识和算法刷题及其平台、问题为导向的十大类刷题算法(数组和字符串、链表、栈和队列、二叉树、堆、图、哈希表、排序和搜索、回溯算法、枚举/递归/分治/动态规划/贪心算法)总结 目录 相关文章 数据结构的最强学习路线之问题为导向的十大类刷题算法总结 一、学习相关的讲解与刷题平台 二、刷题集合 三、常见的十大类考试题型 相关文章 DSt:数据结构的简介、最强学习路线(逻辑结构【数组 阅读详情

相关推荐

CTFshow-pwn入门-前置基础pwn32-pwn34

CTFshow-pwn入门-前置基础pwn32-pwn34

你们de4月天的博客 1135

LeetCode 用两个栈实现队列

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )

qq_62829518的博客 327

决策大模型与生成式大模型有何不同?一文拆解技术框架与落地路径

大模型技术正从内容生成走向复杂场景的智能决策。与生成式大模型拟合概率分布不同,决策大模型以序列决策为核心,融合强化学习机制,在动态环境中感知反馈、持续修正行动路径。其技术框架涵盖语义理解、规划推理与闭环决策,并通过世界模型进行低成本仿真推演,显著提升供应链调度、物流排程等场景的应对效率。实际落地时需结合传统优化算法与人工兜底,构建“语义先导+数值寻优”的分层架构,才能平衡精度与稳定性。这篇内容拆解决策大模型的技术组成、落地路径与常见误区,为企业智能化转型提供可参考的实践框架。

weixin_29057163的博客 191

leetcode:232. 用栈实现队列

详解leetcode:232. 用栈实现队列

2301_76197086的博客 308

可信数据空间关键技术和功能架构研究

可信数据空间(TDS)是实现数据安全共享的基础设施,通过数字合约和使用控制技术确保数据跨域流通的可信与安全。其架构包括服务平台和接入连接器,关键技术涵盖访问控制、隐私计算、区块链等。评估重点在于合规性、连接器能力、互联互通及安全体系。核心在于构建规则引擎而非简单数据汇聚,连接器开发比平台建设更重要。当前面临技术成本博弈、跨域身份互认等挑战,需平衡安全、性能与成本,推动数据要素市场发展。

逸尘的专栏 2227

【Unity】RPG2D龙城纷争(十九)流程与UI界面(终章)

本章为RPG2D系列的终章,在之前的章节中我们已经完成了游戏的所有基本功能,那么用流程与UI界面将其串联起来才是我们整个游戏原型完善的标志。

神码编程 917

[leetCode]09.用两个栈实现队列

解法 思路:先把元素逐一加入stack1,由于需要实现“先进先出”,因此可以将stack1中的元素pop出来,依次压入stack2,这样就使元素完成了一次“转向”,再从stack2栈顶取出元素,这样就实现了“先进先出”。 class CQueue { private LinkedList<Integer> stack1; private LinkedList<Integer> stack2; public CQueue() { stack.

Warms的博客 226

unity6000.0.3版本URP下ScriptableRendererFeature如何实现一张自定义贴图效果?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 586

LeetCode-两个栈实现队列

两个栈实现队列 两个栈实现队列 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。 (若队列中没有元素,deleteHead 操作返回 -1 ) 思路 队列:先进先出 栈:先进后出 两个栈,一个用来存放数据,一个用来辅助 队列尾部插入:先将data栈中数据移到helper栈中,再将插入的数值入data栈,最后将helper数据搬回data,从而实现先进后出的原则 队列头部删除:因data栈已是队

Q_LJJ的博客 2753

Test-Time Adaptation Induces Stronger Accuracy and Agreement-on-the-Line

TTA不管是否提高了OOD的泛化性都增强了线性的趋势,TTA的初始目的是为了增强OOD的表现,一个人可能会觉得TTA使得ACL更强的原因是他消除了ID和OOD之间的差距,因此所有模型间ID vs OOD的准确率接近于y=x这条线,但是实际上这个解释不能够反映我们的经验发现,因为虽然TTA将分布之间的偏移简化为一种放缩的分布,但是这个放缩的因子幅值可能很大,也就是α<<1但是r>>1,这就会导致很偏离y=x这条线,而且理论分析也是,虽然ID和OOD的差距很大,但是线性关系还在。

m0_62673638的博客 149

2026美赛数学建模竞赛 MCM C题:与星共舞的数据 问题一 粉丝投票估计模型 详细解题思路和代码

2026美赛数学建模竞赛 MCM C题:与星共舞的数据 问题一 粉丝投票估计模型 详细解题思路和代码.。开发一个(或多个)数学模型,用于估算每位选手在他们参赛的各周的粉丝投票数(这是未知且严格保密的)。您的模型是否能正确估算出导致每周淘汰结果一致的粉丝投票数?提供一致性度量。您估算出的粉丝投票总数有多少确定性?这种确定性对于每位选手/每周是否总是相同?为您的估算提供确定性度量。

YOLO 853

用两个栈实现队列(leetcode每日打卡)

classCQueue{ Stack<Integer>A; Stack<Integer>B; publicCQueue(){ A=newStack<>(); B=newStack<>(); } publicvoidappendTail(intvalue){ A.add(value); } publicin...

m0_60264772的博客 962

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

剑指offer——用两个栈实现队列 Java

@author: sdubrz @date: 2020.05.04 难度: 简单 @e-mail: lwyz521604#163.com 题目来自《剑指offer》 电子工业出版社 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操...

仰起脸笑得像满月 436

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LeetCode 66, 169, 215

讲解了数学、技巧、优先队列相关的题目。

qq_61350148的博客 1047

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LeetCode刷题攻略

作者:Rocky0429 链接:https://www.zhihu.com/question/280279208/answer/2159525933 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 【数组】 精讲: 蛋蛋惨遭数组滑铁卢,面试官建议回村养猪。​mp.weixin.qq.com/s?__biz=MzI0NjAxMDU5NA==&mid=2475918890&idx=1&sn=b5dbd85bbe358d7b1668e2d9c27.

carrots 4925

用栈实现队列

用两个栈实现栈的思路如下:栈s1装新压入的元素,顺序是“倒过来的”(先进后出),要出栈的话就把s1存的元素倒入s2中,这时候s2中的元素的出栈顺序与队列的出队顺序相同。执行的步骤如下:1. 入队时,检测s1是否已满,未满则入栈。 2. 出队时,检测s2中是否还有元素,若不为空,直接出栈即可;若s2为空,将s1中的元素倒入s2后再弹出s2的栈顶。 具体代码如下: 1 #incl...

dongchuan5097的博客 127

栈、队列:LeedCode刷题笔记

栈和队列刷题 232、Implement Queue using Stacks 1、一入一出:双栈法 ①、代码 class MyQueue { //一、算法思想 //通过:双栈实现队列, 一个栈(inStack), 另一个栈(outStack) //二、实现细节 //1、创建两个栈:用LinkedList, 构造方法中进行初始化 //2、写一个outStack为空,则inStack全出栈,入outStack的方法: inPutOut

无 316

LeetCode--255--用队列实现栈(java版)

使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意: 你只能使用队列的基本操作-- 也就是push to back,peek/pop from front,size, 和is empty这些操作是合法的。 你所使用的语言也许不支持队列。你可...

weixin_34296641的博客 213

LeetCode力扣 第169题:多数元素(哈希表)

本文讲解了力扣第169题《多数元素》的解法。题目要求在给定数组中找到出现次数超过半数的元素。文章通过哈希表的方法给出解决方案:先统计每个元素的出现次数,再遍历哈希表找到满足条件的元素。代码示例展示了具体实现,并分析了时间复杂度和空间复杂度均为O(n)。该方法适合刚学习哈希表的同学练习,文章最后还推荐了相关学习资源。

我是一个小学生,上6年级了 1031

两个队列实现栈

用两个队列实现栈的功能. 1 #include<iostream> 2 #include <deque> 3 using namespace std; 4 template<class T> class Mystack 5 { 6 public: 7 Mystack(){} 8 ~Mystack(...

weixin_30484247的博客 149

LeetCode C++ 225. Implement Stack using Queues 【Stack】【使用队列实现栈】

Implement the following operations of a stack using queues. push(x) -- Push element x onto stack. pop() -- Removes the element on top of the stack. top() -- Get the top element. empty() -- Return whet...

memcpy0的博客 556

leetcode每日打卡(1):用队列实现栈

用队列实现栈题目描述我的解题其他思路 题目描述 使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 pop() – 移除栈顶元素 empty() – 返回栈是否为空 你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。 我的解题 定义队列Q和计数...

一只咸鱼的小努力 459

python力扣刷题——简单题

简单类题目分为11组,大概共有250道题目。 一天坚持刷8-10道题目,4.21开始,争取5.20刷完所有简单类题目。 一、数学类(36) 题号 题目及链接 7 整数反转 ...

weixin_45823221的博客 1279

面试题六 用两个栈实现队列

题目   用两个栈实现队列的进队和出队功能 分析   1. 栈直接用C++的容器适配器 stack 实现   2. 当进队时,直接往栈 1 存放数据;当出队时,如果栈 2 非空则直接从栈 2 取数,否则将栈 1 的数据全部出栈并转移至栈 2,然后再从栈 2 取数。   3. 考虑到这里采用的两个栈应当要封装起来,因此,采用类来实现这个队列。 代码实现 1 #include &l...

weixin_30425949的博客 106
上一篇: 【leetcode 66题 之 8 二叉树的下一个节点】
下一篇: 【leetcode 66题 之 10 斐波那契数列】
BlackZero13
博客等级 码龄11年 10粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值