LeetCode[225] Implement Stack using Queues

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).

分析:

可以用Queue实现,也可以用Deque实现。

代码:

使用Queue:

public class MyStack {
Queue<Integer> q = new LinkedList<Integer>();
/** Push element x onto stack. */
public void push(int x) {
q.offer(x);
int n = q.size();
while (n-- > 1) {
q.offer(q.poll());
}
}
/** Removes the element on top of the stack and returns that element. */
public int pop() {
return q.poll();
}
/** Get the top element. */
public int top() {
return q.peek();
}
/** Returns whether the stack is empty. */
public boolean empty() {
return q.isEmpty();
}
}

使用Deque:

public class MyStack {
Deque<Integer> dq = new LinkedList<Integer>();
/** Push element x onto stack. */
public void push(int x) {
dq.offerLast(x);
}
/** Removes the element on top of the stack and returns that element. */
public int pop() {
return dq.pollLast();
}
/** Get the top element. */
public int top() {
return dq.peekLast();
}
/** Returns whether the stack is empty. */
public boolean empty() {
return dq.isEmpty();
}
}

欢迎关注公众号: FullStackPlan 获取更多干货

Copyright © 2016 - 2017 LBD All Rights Reserved.

访客数 : | 访问量 :