LeetCode--225.用队列实现栈(栈和队列)

张开发
2026/4/13 13:18:05 15 分钟阅读

分享文章

LeetCode--225.用队列实现栈(栈和队列)
题目描述请你仅使用两个队列实现一个后入先出LIFO的栈并支持普通栈的全部四种操作push、top、pop和empty。实现MyStack类void push(int x)将元素 x 压入栈顶。int pop()移除并返回栈顶元素。int top()返回栈顶元素。boolean empty()如果栈是空的返回true否则返回false。注意你只能使用队列的标准操作 —— 也就是push to back、peek/pop from front、size和is empty这些操作。你所使用的语言也许不支持队列。 你可以使用 list 列表或者 deque双端队列来模拟一个队列 , 只要是标准的队列操作即可。示例输入 [MyStack, push, push, top, pop, empty] [[], [1], [2], [], [], []] 输出 [null, null, null, 2, 2, false] 解释 MyStack myStack new MyStack(); myStack.push(1); myStack.push(2); myStack.top(); // 返回 2 myStack.pop(); // 返回 2 myStack.empty(); // 返回 False提示1 x 9最多调用100次push、pop、top和empty每次调用pop和top都保证栈不为空**进阶**你能否仅用一个队列来实现栈。解题思路代码classMyStack{privateQueueIntegerque;publicMyStack(){// 初始化队列quenewArrayDeque();}publicvoidpush(intx){que.add(x);}publicintpop(){intnque.size();// 弹出前n-1个元素 再重新入队while(n--1){inteleque.poll();que.add(ele);}// 此时给最后一个元素出队returnque.poll();}publicinttop(){intnque.size();// 弹出前n-1个元素 再重新入队while(n--1){inteleque.poll();que.add(ele);}intresultque.peek();que.poll();que.add(result);// 此时返回最后一个元素returnresult;}publicbooleanempty(){returnque.isEmpty();}}/** * Your MyStack object will be instantiated and called as such: * MyStack obj new MyStack(); * obj.push(x); * int param_2 obj.pop(); * int param_3 obj.top(); * boolean param_4 obj.empty(); */

更多文章