LeetCode-Implement Stack using Queues

深碍√TFBOYSˉ_ 2022-08-04 00:47 105阅读 0赞

Implement the following operations of a stack using queues.

  • push(x) — Push element x onto stack.
  • pop() — Removes the element on top of the stack.
  • top() — Get the top element.
  • empty() — Return whether the stack is empty.

Notes:

  • You must use only standard operations of a queue — which means only push to back, peek/pop from front, size, and is empty operations are valid.
  • Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.
  • You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).

一个队列即可完成,上代码:

  1. class MyStack {
  2. LinkedList<Integer> queue = new LinkedList<Integer>();
  3. // Push element x onto stack.
  4. public void push(int x) {
  5. queue.add(x);
  6. for (int i = 0; i < queue.size()-1; i++) {
  7. queue.add(queue.poll());
  8. }
  9. }
  10. // Removes the element on top of the stack.
  11. public void pop() {
  12. queue.poll();
  13. }
  14. // Get the top element.
  15. public int top() {
  16. return queue.peek();
  17. }
  18. // Return whether the stack is empty.
  19. public boolean empty() {
  20. return queue.isEmpty();
  21. }
  22. }

主要是每次push的时候,其实已经把入队列的顺序给reverse了。用两个队列也可以实现,但是复杂程度实在是太高了,就不展示了

发表评论

表情:
评论列表 (有 0 条评论,105人围观)

还没有评论,来说两句吧...

相关阅读