🔗 LeetCode 232 - Implement Queue using Stacks
📌 题目描述:
使用两个栈 stackIn 和 stackOut 实现一个队列,支持以下操作:
- push(x):将元素 x 推到队列的末尾
- pop():移除队列开头的元素并返回
- peek():返回队列开头的元素
- empty():返回队列是否为空
要求:
只能使用栈的标准操作(push, pop, peek, empty)
💡 解题思路:
- 入队操作(push)直接往 stackIn 中加元素;
- 出队操作(pop 或 peek)时,如果 stackOut 为空,则将 stackIn 中的所有元素倒序转移到 stackOut;
- 保证先进先出(FIFO)的顺序。
✅ JavaScript 实现:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 
 | var MyQueue = function () {this.stackIn = [];
 this.stackOut = [];
 };
 
 MyQueue.prototype.push = function (x) {
 this.stackIn.push(x);
 };
 
 MyQueue.prototype.pop = function () {
 if (this.stackOut.length === 0) {
 while (this.stackIn.length) {
 this.stackOut.push(this.stackIn.pop());
 }
 }
 return this.stackOut.pop();
 };
 
 MyQueue.prototype.peek = function () {
 if (this.stackOut.length === 0) {
 while (this.stackIn.length) {
 this.stackOut.push(this.stackIn.pop());
 }
 }
 return this.stackOut[this.stackOut.length - 1];
 };
 
 MyQueue.prototype.empty = function () {
 return this.stackIn.length === 0 && this.stackOut.length === 0;
 };
 
 | 
🧠 思考拓展: