首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用两个栈实现队列详解(附Java、Python源码)——《剑指Offer》

用两个栈实现队列详解(附Java、Python源码)——《剑指Offer》

作者头像
bboy枫亭
发布于 2020-09-22 03:08:16
发布于 2020-09-22 03:08:16
34200
代码可运行
举报
文章被收录于专栏:csdn_blogcsdn_blog
运行总次数:0
代码可运行

1. 题目描述

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

2. 分析

队列是:“先进先出” 栈是:“先进后出

如何用两个站实现队列,看下图两个栈:inout

图解:push 操作就直接往in中 push, pop 操作需要分类一下:如果out栈为空,那么需要将in栈中的数据转移到out栈中,然后在对out栈进行 pop,如果out栈不为空,直接 pop 就可以了。

3. 代码实现

3.1 Java实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.util.Stack;

public class JzOffer5 {
    Stack<Integer> in = new Stack<Integer>();
    Stack<Integer> out = new Stack<Integer>();

    public void push(int node){
        in.push(node);
    }

    public int pop(){
        if (out.isEmpty()) {
            while (!in.isEmpty()) {
                out.push(in.pop());
            }
        }
        return out.pop();
    }
}

3.2 Python实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stack1 = []
        self.stack2 = []
    
    def push(self, node):
        # write code here
        self.stack1.append(node)
    def pop(self):
        # return xx
        if len(self.stack2) == 0:
            while len(self.stack1) != 0:
                self.stack2.append(self.stack1.pop())
        return self.stack2.pop()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/08/20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java设计模式-工厂模式
意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
框架师
2021/03/08
3560
java设计模式之-工厂模式
工厂模式是一种创建对象的设计模式,它通过将对象的实例化过程封装在一个工厂类中,从而实现对象的创建和使用的解耦。它属于创建型模式的一种,可以帮助我们更加灵活地创建对象。
用户11172247
2024/06/19
1300
设计模式-工厂模式设计与详解
工厂模式(Factory Pattern)是一种常用的创建型设计模式,其核心目的是实现创建对象的接口和具体的实例化分离,通过建立一个工厂类,对实现了同一接口的一些类进行实例的创建,以增加系统的灵活性和可维护性。
Damon小智
2024/05/12
2440
设计模式-工厂模式设计与详解
GoF 23种经典的设计模式——工厂模式
工厂模式是一种创建型设计模式,它提供了一种封装对象创建过程的方式。在工厂模式中,我们将对象的实例化过程移到一个独立的工厂类中,客户端通过调用工厂类的方法来创建对象,而不是直接使用 new 关键字实例化对象。
Andromeda
2024/01/13
1820
Java设计模式——工厂模式与抽象工厂模式
Hello大家早上好,我是阿Q,好久不见,甚为想念(窃喜)。最近一段时间一直在参与安卓项目的开发(已忙成狗),也没能抽出时间来继续为大家总结设计模式的知识,在这里Say sorry了。由于好久没有写安卓方面的东西了,所以最近一段时间写起代码来事倍功半,踩了N多坑,被虐成Dog了。我最近有一个想法,就是想将之前学过的安卓知识再拾起来,以后在讲解java知识的同时也穿插着总结一下安卓的知识,也不知道大家感不感兴趣。如果大家想学习安卓或者有什么技术交流的可以在公众号后台给阿Q留言,阿Q视情况不定期更新安卓。好了,昨晚回家比较早,就抽时间讲一下工厂模式与抽象工厂设计模式吧。
阿Q说代码
2021/05/13
5250
Java设计模式——工厂模式与抽象工厂模式
一文搞懂设计模式—工厂方法模式
在面向对象设计中,经常需要创建对象实例。传统的方式是在代码中直接使用 new 关键字来创建对象,但这种方式可能会导致高耦合和难以扩展。
BookSea
2024/02/29
2630
一文搞懂设计模式—工厂方法模式
通俗易懂设计模式解析——工厂模式(Factory Method)
  上一篇我们介绍了单例模式,今天给大家讲一个比较简单的模式——工厂模式(Factory Method),工厂模式又是什么呢?顾名思义,工厂——生产制造东西的地方。那么应用在程序当中该如何使用、并且又起到什么效果呢?以至于为什么用工厂模式呢?
小世界的野孩子
2019/09/11
4221
通俗易懂设计模式解析——工厂模式(Factory Method)
Java设计模式-工厂模式
简单来说工厂模式就是帮助我们创建对象,隐藏了对象创建过程的复杂度(如类B需要调用类A,工厂类提供A类的创建接口,B只需要调用接口传入相应参数即可)、避免你辛苦的准备构造方法的参数。说白了--就是工厂提供产品给客户(按照提供的方式不同分成三类:简单工厂、工厂、抽象工厂) 具体简介看下面:
蒋老湿
2020/01/03
5880
设计模式之工厂模式
工厂模式属于创建型设计模式,它用于解耦对象的创建和使用。通常情况下,我们创建对象时需要使用new操作符,但是使用new操作符创建对象会使代码具有耦合性。工厂模式通过提供一个公共的接口,使得我们可以在不暴露对象创建逻辑的情况下创建对象。
用户11397231
2024/12/18
1480
设计模式之工厂模式
设计模式---工厂模式
简单工厂模式属于类的创新型模式,又叫静态工厂方法模式,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。
大忽悠爱学习
2021/11/15
3870
「聊设计模式」之简单工厂模式(Simple Factory)
🏆本文收录于 《聊设计模式》 专栏,专门攻坚指数级提升,助你一臂之力,早日登顶🚀,欢迎持续关注&&收藏&&订阅!
bug菌
2023/10/30
7282
「聊设计模式」之简单工厂模式(Simple Factory)
设计模式之工厂模式!深入解析简单工厂模式,工厂方法模式和抽象工厂模式
工厂模式 创建型模式: 对类的实例化过程进行抽象,能够将对象的创建和对象的使用分离开来 为了使得软件的结构更加清晰,外界对于这些对象使用只需要知道共同的接口,而不在意具体实现的细节,这样使得整个系统更加符合单一职责的原则 创建型模式隐藏了类的实例的创建细节,通过隐藏对象创建和组合过程从而使得整个系统相互独立的目的 创建型模式在创建什么,由谁创建,何时创建更加灵活 工厂模式是一个重要的创建型模式,主要功能就是实例化对象 工厂模式: 负责将有共同接口的类实例化 主要解决接口选择问题 在不同的条件下需要创建
攻城狮Chova
2022/03/24
4660
设计模式之工厂模式!深入解析简单工厂模式,工厂方法模式和抽象工厂模式
设计模式之工厂模式
将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。 实例化对象,用工厂方法代替new操作。
时间静止不是简史
2020/07/24
4500
设计模式之工厂模式
设计模式二十四章经之工厂模式
概述 工厂模式在我们平常开发中应用比较广泛,或许你不知道,但你已经使用了很多次了。我们明确地计划不同条件下创建不同实例时,就会使用到工厂模式。工厂模式分为简单工厂模式和抽象工厂模式。这边我们先说简单的工厂模式。 使用场景 在任何需要生成复杂的对象的地方,都可以使用工厂模式。复杂对象适合使用工厂模式。而直接通过new就可以完成创建的对象无需使用工厂模式。 具体实现 首先,我们创建一个实体类的接口: public interface Shape { void draw(); } 现在我们创建2个实体
我就是马云飞
2018/06/22
3400
工厂方法到抽象工厂模式
简单工厂模式虽然简单,但存在一个很严重的问题。当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,将违背“开闭原则”,如何实现增加新产品而不影响已有代码?工厂方法模式应运而生,本文将介绍第二种工厂模式——工厂方法模式。
张哥编程
2024/12/21
1220
Java设计模式:工厂模式之简单工厂、工厂方法、抽象工厂(三)
在软件设计中,工厂模式是一种常见的设计模式,它提供了一种创建对象的最佳方式。通过工厂模式,我们可以将对象的创建逻辑与使用逻辑分离,降低代码的耦合度,提高系统的可扩展性和可维护性。
公众号:码到三十五
2024/03/19
2320
Java设计模式-工厂模式(1)简单工厂模式
设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。
宁在春
2022/10/31
3070
Java设计模式-工厂模式(1)简单工厂模式
Java设计模式(2)工厂模式
工厂模式是一种创建型设计模式,其主要目标是封装对象的创建过程,使客户端代码与具体类的实例化解耦。通过使用工厂模式,客户端无需直接调用具体类的构造函数,而是通过调用工厂方法或工厂接口来获取所需的对象。这提高了系统的灵活性,使得更容易更换或扩展产品对象。
Jensen_97
2024/04/18
1140
Java设计模式(2)工厂模式
Java设计模式之(二)——工厂模式
定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
用户4268038
2021/11/18
6710
设计模式——工厂模式
设计模式——工厂模式
Java架构师必看
2021/05/14
2390
设计模式——工厂模式
推荐阅读
相关推荐
Java设计模式-工厂模式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档