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

用两个栈实现队列

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

思路

入队:入栈(栈1) 出队:将入栈的元素一次出栈到栈2,再pop栈2的首元素

步骤

  1. 入队:直接入栈
  2. 出队:判断栈2(删除栈)元素是否为空,若为空,判断栈1元素是否为空,不为空,则将栈1的元素出栈到站2,再将栈2的首元素出栈即可
import java.util.Stack;

public class Solution {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();
    
    public void push(int node) {
        stack1.push(node);
    }
    
    public int pop() {
        // 判断此时删除栈(栈2)是否存在待删除的元素
        // 不存在则将添加栈(栈1)的元素出栈到栈2中
        if(stack2.isEmpty()){
            while(!stack1.isEmpty()){
                stack2.push(stack1.pop());
            }
        }
        // 再次判断栈2是否为空,因为上一个判断后,可能栈1的元素也为空
        // 也就是,此时“队列”中不存在元素,直接返回-1
        // 否则,直接将栈2pop一个元素,再返回即可
        if(stack2.isEmpty()) return -1;
        else{
            int res = stack2.pop();
            return res;
        }
    }
}
全部评论

相关推荐

05-12 11:09
已编辑
门头沟学院 后端
已注销:没必要放这么多专业技能的描述。这些应该是默认已会的,写这么多行感觉在凑内容。项目这块感觉再包装包装吧,换个名字,虽然大家的项目基本都是网上套壳的,但是你这也太明显了。放一个业务项目,再放一个技术项目。技术项目,例如中间件的一些扩展和尝试。
点赞 评论 收藏
分享
05-03 12:45
西南大学 Java
nsnzkv:你这项目写的内容太多了,说实话都是在给自己挖坑,就算简历过了,后面面试也难受
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务