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

lintcode: Implement Queue by Two Stacks

2016-03-25 17:55 225 查看
Description
Notes
Testcase
Judge

As the title described, you should only use two stacks to implement a queue's actions.
The queue should support
push(element)
,
pop()
and
top()
where
pop is pop the first(a.k.a front) element in the queue.
Both pop and top methods should return the value of first element.

Have you met this question in a real interview?

Yes

Example

push(1)
pop()     // return 1
push(2)
push(3)
top()     // return 2
pop()     // return 2


Challenge

implement it by two stacks, do not use any other data structure and push, pop and top should be O(1) by AVERAGE.

class Queue {
public:
stack<int> stack1;
stack<int> stack2;

Queue() {
// do intialization if necessary
}

void push(int element) {
// write your code here
while (stack2.size() > 0)
{
stack1.push(stack2.top());
stack2.pop();
}

stack1.push(element);
}

int pop() {

while (stack1.size() > 0)
{
stack2.push(stack1.top());
stack1.pop();
}

if (stack2.size() > 0)
{
int tmp = stack2.top();
stack2.pop();
return tmp;
}

return -1;
// write your code here
}

int top() {

while (stack1.size() > 0)
{
stack2.push(stack1.top());
stack1.pop();
}

if (stack2.size() > 0)
{
return stack2.top();
}

return -1;
// write your code here
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: