剑指offer - 用两个栈实现队列(Java实现)

题目链接:https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6?tpId=13&&tqId=11158&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

  思路:入队 - 所有元素加入stack1。出队 - 由于出队时是要删除第一个元素,也就是栈底元素,此时我们就可以启用stack2,将stack1中的元素全部push到stack2中,然后删除stack2的栈顶元素,最后将stack2中的元素全部push到stack1即可。(可以顺着这个思路考虑一下使用两个队列实现栈)

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() {
        while(stack1.size() > 0) {
            stack2.push(stack1.pop());
        }
        int val = stack2.pop();
        while(stack2.size() > 0) {
            stack1.push(stack2.pop());
        }
        return val;
    }
}
【剑指offer】题目全解 文章被收录于专栏

本专栏主要是刷剑指offer的题解记录

全部评论

相关推荐

小火柴燃烧吧:接啊,接了之后反手在咸鱼找个大学生搞一下,量大从优
点赞 评论 收藏
分享
伟大的烤冷面被普调:暨大✌🏻就是强
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务