剑指offer28 JZ9 用两个栈实现队列

用两个栈实现队列

https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6?tpId=13&tqId=23281&ru=/exam/oj/ta&qru=/ta/coding-interviews/question-ranking&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26tpId%3D13%26type%3D13

思路

借助栈的先进后出规则模拟实现队列的先进先出

  • 1、当插入时,直接插入 stack1
  • 2、当弹出时,当 stack2 不为空,弹出 stack2 栈顶元素,如果 stack2 为空,将 stack1 中的全部数逐个出栈入栈 stack2,再弹出 stack2 栈顶元素

alt alt

代码实现

import java.util.*;

public class Solution {
    //存放入栈元素
    Stack<Integer> stack1 = new Stack<Integer>();
    //存放出栈元素
    Stack<Integer> stack2 = new Stack<Integer>();
   
    public void push(int node) {
         //插入时直接插入到 stack1 
        stack1.push(node);
    }
    
    public int pop() {
    //stack2为空将stack1元素全部插入到stack2 
        if(stack2.isEmpty()){
        while(stack1.size()>0){
            stack2.push(stack1.pop());
                    }
        }
            //不为空时删除直接返回stack2的顶部元素
            return stack2.pop();
       
        
    }
}
全部评论

相关推荐

一表renzha:手写数字识别就是一个作业而已
点赞 评论 收藏
分享
05-22 09:23
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务