搜索

写点算法题——剑指 Offer 09. 用两个栈实现队列


发布时间: 2023-03-23 10:49:00    浏览次数:14 次

分享时间:2023-03-23 10:49:00
数据来源:网络
提取密码:在线浏览
文件类型:文章

image.png

// 定义 CQueue 类
class CQueue {
    private Stack<Integer> stackIn; // 定义一个进队列的栈
    private Stack<Integer> stackOut; // 定义一个出队列的栈

    // 构造函数,新建进队列栈和出队列栈
    public CQueue() {
        stackIn = new Stack<>();
        stackOut = new Stack<>();
    }

    // 在队列末尾添加数值(进队列)的方法,将元素压入进队列栈中
    public void appendTail(int value) {
        stackIn.push(value);
    }

    // 删除队列头元素(出队列)的方法
    public int deleteHead() {
        // 如果出队列栈不为空,则直接弹出元素
        if (!stackOut.isEmpty()) {
            return stackOut.pop();
        }
        // 如果进队列栈也为空,则队列已空,返回 -1
        if (stackIn.isEmpty()) {
            return -1;
        }
        // 如果出队列栈为空,但是进队列栈不为空,则需要将进队列栈中的元素倒入出队列栈中
        while (!stackIn.isEmpty()) {
            stackOut.push(stackIn.pop()); // 出队列栈底为队列头元素,将元素压入出队列栈
        }
        return stackOut.pop(); // 返回出队列栈顶元素
    }
}

每次写算法题都会感谢chatgpt

免责声明 写点算法题——剑指 Offer 09. 用两个栈实现队列,资源类别:文本, 浏览次数:14 次, 文件大小:-- , 由本站蜘蛛搜索收录2023-03-23 10:49:00。此页面由程序自动采集,只作交流和学习使用,本站不储存任何资源文件,如有侵权内容请联系我们举报删除, 感谢您对本站的支持。 原文链接:https://segmentfault.com/a/1190000043572244