题解 | #用两个栈实现队列#

用两个栈实现队列

http://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6

import java.util.Stack;

public class Solution { Stack stack1 = new Stack(); Stack stack2 = new Stack();

public void push(int node) {
    stack1.push(node);
}

public int pop() {

    if(stack2.isEmpty()){
    while(!stack1.isEmpty()){
        stack2.push(stack1.pop());
        }
    }

    return stack2.pop();
   
}

}

函数设计: 题目只要求实现 加入队尾push() 和 删除队首pop() 两个函数的正常工作,因此我们可以设计栈 A 用于加入队尾操作,栈 B 用于将元素倒序,从而实现删除队首元素。

加入队尾 push()函数: 将数字 node 加入栈 A 即可。

删除队首pop()函数: 有以下三种情况。

当栈 B 不为空: B中仍有已完成倒序的元素,因此直接返回 B 的栈顶元素。

否则: 将栈 A 元素全部转移至栈 B 中,实现元素倒序,并返回栈 B 的栈顶元素。

剑指offer刷题记录 文章被收录于专栏

这个专栏主要记录算法刷题记录 希望对看到的人有所帮助

全部评论

相关推荐

牛客583549203号:腾讯还好,况且实习而已,实习生流动性很大,属于正常现象,记得和HR委婉解释
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务