栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

剑指 Offer 09. 用两个栈实现队列----2021/12/28

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

剑指 Offer 09. 用两个栈实现队列----2021/12/28

栈与队列 剑指 Offer 09. 用两个栈实现队列-2021/12/28
    用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在
    队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )
    
#   示例 1:
    输入:
    ["CQueue","appendTail","deleteHead","deleteHead"]
    [[],[3],[],[]]
    输出:[null,null,3,-1]
    
#   提示:
    1 <= values <= 10000
    最多会对 appendTail、deleteHead 进行 10000 次调用

题目解读:

	[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”] :这里表示的是按顺序执行每一步函数操作。
	然后[[],[3],[],[]]代表每一个函数所需要的参数。
# 举例:
    CQueue 表示新建一个CQueue对象,对应的所需参数为[],即此操作不需要参数。appendTail 表示
    执行一个appendTail()操作,函数对应要所需要的参数为3。deleteHead 表示执行一个deleteHead操作,
    对应的所需参数为[],即此操作不需要参数。

解题思路:

  • 栈 stack1 添加数据、栈stack2 删除数据

  • 判断stack2是否为空

    1. 否------返回值

    2. 是------进行下一步

  • 判断stack1是否为空

    1. 是-----返回-1
    2. 否-----当stack1不为空是,一直弹出数据,并推入stack2中,然后stack2弹出

Java代码:

import java.util.Stack;
public class CQueue{
    Stack stack1,stack2;

    public CQueue(){
        stack1 = new Stack();
        stack2 = new Stack();
    }

    public void appendTail(int value){
        stack1.push(value);
    }

    public int deleteHead(){
        // stack2不为空,将stack2的值弹出
        if(!stack2.isEmpty()){
            return stack2.pop();
        }
        // stack1为空,返回-1
        // 注意:此处必须要放在下面,这是因为Stack操作会删除元素,此时stack1已经是空的了
        if(stack1.isEmpty()){
            return -1;
        }
        // 运行到这说明,stack2为空,需要将stack1的值赋给stack2,形成了一次倒叙
        while(!stack1.isEmpty()){
            stack2.push(stack1.pop());
        };
        return stack2.pop();
    }

    public static void main(String [] args){
        CQueue obj = new CQueue();
        System.out.println(obj.deleteHead());
        obj.appendTail(5);
        obj.appendTail(2);
        System.out.println(obj.deleteHead());
        System.out.println(obj.deleteHead());
    }

}



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/681274.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号