刷题-----用两个栈实现队列(简单)

题目概述:

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

题目分析:

1.自己一开始在做的时候,拿到这道题又是无法下手,还是太菜,遇到新颖的题目都下不去手。
2.看了提示之后,才会做这道题。
3.首先,要抓住队列“先进先出”的原则和栈“先进后出”的原则。
4.拿到数据a,b,c,将其push进栈,然后栈内存储顺序就是abc,那么再读数据的时候,就是cba,这就和队列的原则相反,但是我们有两个栈。读取这些数据到第二栈中,第二栈的存储数据就是cba,此时再第二栈里面读出数据就是cba,与队列一致。
5.那么只要存数据存到第一个栈,第二栈为空时,把第一栈存的数据转到第二栈。每次读取数据从第二栈里面读取,即可实现题目要求。
6.一道简单题,结果自己完全没思路,就是一道困难题。

代码示例:

import java.util.Stack;

public class Solution {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();
    
    public void push(int node) {
        stack1.push(node);
    }
    
    public int pop() {
        if(stack2.isEmpty()){
            int i = 0;
            while(!stack1.isEmpty()){
                i = stack1.pop();
                stack2.push(i);
            }
        }
        return stack2.pop();
    }
}

你可能感兴趣的:(刷题,队列,栈)