您的位置:首页 > 产品设计 > UI/UE

Implement Queue using Stacks

2016-06-09 12:43 417 查看
这种基础题,为啥自己一开始的设计总是能想出很邪门的思路来,又是两个stack一起用,于是要用bool来控制用哪个stack,进而lock,线程保护等等就全出来了。。。

想上天啊!!

class MyQueue {

//boolean pushS1 = true;
Stack<Integer> s1 = new Stack<>();
Stack<Integer> s2 = new Stack<>();

// Push element x to the back of queue.
public void push(int x) {
s1.push(x);
// if (pushS1) {
// s1.push(x);
// } else {
// s2.push(x);
// }
}

// Removes the element from in front of queue.
public void pop() {
// if (pushS1) {
// pushS1 = false;
// }
if (!s2.isEmpty()) {
s2.pop();
} else {
while (!s1.isEmpty()) {
s2.push(s1.pop());
}
////
s2.pop();
////
}
}

// Get the front element.
public int peek() {
if (!s2.isEmpty()) {
return s2.peek();
} else {
while (!s1.isEmpty()) {
s2.push(s1.pop());
}
return s2.peek();
}
}

// Return whether the queue is empty.
public boolean empty() {
return s1.isEmpty() && s2.isEmpty();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: