【LeetCode-简单题】225. 用队列实现栈

文章目录

题目

方法一:单个队列实现

  1. 入栈 和入队正常进行
  2. 出栈的元素其实就是队列的尾部元素,所以直接将尾部元素弹出即可,其实就可以将除了最后一个元素的其他元素出队再加入队,然后弹出队首元素,就是出栈
  3. top操作,也是同理需要弹出队尾元素,但是需要将对尾元素再重新加入队列队尾,避免做pop操作产生歧义
java 复制代码
class MyStack {

    Queue<Integer> queue ; //复用队列
   
    public MyStack() {
        queue  = new LinkedList<>();
      
    }
    
    public void push(int x) {
        queue.add(x);
    }
    
    public int pop() {//出栈  其实就是将队列最后一个元素弹出去  所以我们可以将除了最后一个元素的其他元素依次弹出再加入队列
       queuefz();
       return queue.poll();
    }
    
    public int top() {
        queuefz();
        int result = queue.poll();//将队首元素弹出得到栈顶元素
        queue.add(result);//再将元素加入队尾,还原状态
        return result;
       
    }
    
    public boolean empty() {
        return queue.isEmpty();
    }

    public void queuefz(){//将队列中的栈顶元素放到队首
        int  size = queue.size();
        for(int i = size ; i >1 ; i--){
            int out = queue.poll();
            queue.add(out);
        }
    }
  
}

/**
 * Your MyStack object will be instantiated and called as such:
 * MyStack obj = new MyStack();
 * obj.push(x);
 * int param_2 = obj.pop();
 * int param_3 = obj.top();
 * boolean param_4 = obj.empty();
 */
相关推荐
罗西的思考2 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 --- (2)--- 训练
人工智能·算法·机器学习
深圳市方中禾科技3 小时前
FZH1625 LCD 驱动芯片深度评测与实战指南
算法·led
我不会起名字3224 小时前
一天一道算法题(34):回溯法的经典例题(子集)
java·数据结构·python·算法·golang·深度优先·力扣
测试老哥5 小时前
接口测试的测试用例应该怎么写?
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
huang5791475 小时前
哈希算法的抗碰撞机制与安全性增强策略4
算法
林浩杨_6 小时前
SIGIR 2026|南京大学:Video-GAR:“通过生成 Query 来验证视频语义理解”的生成增强范式
论文阅读·人工智能·算法
CC数分6 小时前
2026年HRBP岗位硬性要求和加分项
面试·职场和发展·数据分析
Elsa️7466 小时前
算法一周刷题总结
c++·算法
小小程序猴16 小时前
深圳乘路资讯AI培训怎么样?课程靠谱吗?——一套课程可信度评估模型与实证分析
人工智能·算法
云上先途6 小时前
标签化服务适合哪些人?常见适用场景一次讲清
大数据·人工智能·算法·音视频