# LeetCode算法题-Implement Stack Using Queues

### 01 看题和准备

push（x） - 将元素x推入栈。
pop（） - 删除栈顶部的元素。
top（） - 获取顶部元素。
empty（） - 返回栈是否为空。

MyStack stack = new MyStack（）;
stack.push（1）;
stack.push（2）;
stack.top（）; //返回2
stack.pop（）; //返回2
stack.empty（）; //返回false

### 02 第一种解法

class MyStack {
List<Integer> list = null;
/** Initialize your data structure here. */
public MyStack() {
list = new ArrayList<Integer>();
}

/** Push element x onto stack. */
public void push(int x) {
}

/** Removes the element on top of the stack and returns that element. */
public int pop() {
int top = list.get(list.size()-1);
list.remove(list.size()-1);
}

/** Get the top element. */
public int top() {
return list.get(list.size()-1);
}

/** Returns whether the stack is empty. */
public boolean empty() {
return list.isEmpty();
}
}

### 03 第二种解法

class MyStack2 {

Queue<Integer> queue = null;
int size ;

/** Initialize your data structure here. */
public MyStack2() {
size = 0;
}

/** Push element x onto stack. */
public void push(int x) {
size++;
}

/** Removes the element on top of the stack and returns that element. */
public int pop() {
for (int i=1; i<size; i++) {
}
size--;
return queue.poll();
}

/** Get the top element. */
public int top() {
for (int i=1; i<size; i++) {
}
int res = queue.peek();
return res;
}

/** Returns whether the stack is empty. */
public boolean empty() {
return queue.isEmpty();
}
}

### 04 第三种解法

class MyStack3 {

Queue<Integer> queue = null;

/** Initialize your data structure here. */
public MyStack3() {
}

/** Push element x onto stack. */
public void push(int x) {
for (int i=0; i<queue.size()-1; i++) {
}
}

/** Removes the element on top of the stack and returns that element. */
public int pop() {
return queue.poll();
}

/** Get the top element. */
public int top() {
return queue.peek();
}

/** Returns whether the stack is empty. */
public boolean empty() {
return queue.isEmpty();
}
}

### 05 小结

posted @ 2018-12-06 20:55 程序员小川 阅读(...) 评论(...) 编辑 收藏