题解 | 用两个栈实现队列

用两个栈实现队列

https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6

import java.util.*;
import java.util.Stack;

public class Solution {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();
    //栈是先进后出 队列是先进先出
    //情况1 全部元素先push 后pop
    //例如: 1 2 这样栈1 出栈顺序 2 1
    //栈2入栈顺序2 1 出栈顺序 1 2 
    //情况2 边插入数据 边出栈 
    //例如 先插入数据 1 2 再出栈数据1 再插入数据3 期望再次出栈的是数值2
    //先插入数据 1 2 到栈1
    // 出栈 2 1到栈2 出栈数据 1 剩下数据 2
  
   
    public void push(int node) {
        stack1.push(node);
    }

    
    public int pop() {
          // 判断是否栈2有数据 有数据按栈2进行出栈
        if(!stack2.isEmpty()){
           return stack2.pop();
        }
 // 否则把栈1数据全部给栈2 
        while(!stack1.isEmpty()){
            stack2.push(stack1.pop());
        }
     //栈2再进行出栈 进而实现队列功能
        return stack2.pop();
    
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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