❝一个男生和一个女生一起上编程课。男生摸了女生的胸部。女生说,Don't touch them. My breasts are private.男生说,Yes, I know, but we are in same class.❞
用两个栈实现队列题目描述
用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作。队列中的元素为 int 类型。
原题展示解法Push 操作,每次都存入 stack1;Pop 操作,每次从 stack2 取:
- stack2 栈不为空时,不能将 stack1 元素倒入;
- stack2 栈为空时,需要一次将 stack1 元素全部倒入。
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()) { if (stack1.isEmpty()) { return -1; } while (!stack1.isEmpty()) { stack2.push(stack1.pop()); } } return stack2.pop();}
}
### 测试用例1. 往空的队列里添加、删除元素;1. 往非空的队列添加、删除元素;1. 连续删除元素直至队列为空。**我把我写的所有题解整理成了一本电子书放在了 github 上,三天内冲击到 github 排行榜榜首!近 5w 人下载阅读!要获取的话,直接进入下方链接就可以了(记得给我点个 star):**https://github.com/geekxh/hello-algorithm![](https://s4.51cto.com/images/blog/202101/28/a41ef2181d729367e2c0eef0ab88d43f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)