Implement Queue using Stacks

红太狼 2022-08-03 08:36 35阅读 0赞

Implement the following operations of a queue using stacks.

  • push(x) — Push element x to the back of queue.
  • pop() — Removes the element from in front of queue.
  • peek() — Get the front element.
  • empty() — Return whether the queue is empty.

Notes:

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

  • You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).

思路:额外数组记录状态,注意peek是查看最近一次加入的元素

  1. class MyQueue {
  2. // Push element x to the back of queue.
  3. Stack<Integer> stack=new Stack<>();
  4. List<Integer> list=new ArrayList<>();
  5. public void push(int x) {
  6. stack.push(x);
  7. list.add(x);
  8. }
  9. // Removes the element from in front of queue.
  10. public void pop() {
  11. stack.remove(list.get(0));
  12. list.remove(0);
  13. }
  14. // Get the front element.
  15. public int peek() {
  16. return list.get(0);
  17. }
  18. // Return whether the queue is empty.
  19. public boolean empty() {
  20. return stack.isEmpty();
  21. }
  22. }

发表评论

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

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

相关阅读