【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();
 */
相关推荐
2501_9011478310 分钟前
单词拆分(Word Break)题解 | 动态规划解法
考研·算法·动态规划
翱翔的苍鹰25 分钟前
使用PyTorch实现线性回归的完整流程
算法·回归·线性回归
万行29 分钟前
机器人系统ros2&期末速通2
前端·人工智能·python·算法·机器学习
qq_4335545433 分钟前
C++ 图论算法:二分图最大匹配
c++·算法·图论
MSTcheng.37 分钟前
【算法】滑动窗口解决力扣『将x减到0的最操作数』问题
算法·leetcode·职场和发展
静心问道37 分钟前
动态规划分类及算法实现
算法·分类·动态规划
bbq粉刷匠40 分钟前
Java—排序1
数据结构·算法·排序算法
jghhh0140 分钟前
基于MATLAB的分块压缩感知程序实现与解析
开发语言·算法·matlab
2301_8008951041 分钟前
hh的蓝桥杯每日一题(交换瓶子)
职场和发展·蓝桥杯
智驱力人工智能41 分钟前
视觉分析赋能路面漏油检测 从产品设计到城市治理的实践 漏油检测 基于YOLO的漏油识别算法 加油站油罐泄漏实时预警技术
人工智能·opencv·算法·yolo·目标检测·计算机视觉·边缘计算