美文网首页
剑指offer--队列、栈(2)

剑指offer--队列、栈(2)

作者: 机智的柠檬 | 来源:发表于2020-03-14 16:22 被阅读0次

参考:https://www.cnblogs.com/qmillet/p/12016285.html
知识点 : Stack API

image.png

题目一:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
方法一:
暴力解法:
一个栈存储push的数据,一个栈pop数据。每次push前将stack2中数据添加到stack1中,再讲数据存储到stack1中;每次pop数据前将stack1中数据push到stack2中,再返回stack2中的栈顶元素。

import java.util.Stack;

public class Solution {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();
    
    public void push(int node) {
        while(!stack2.empty()){
            stack1.push(stack2.pop());
        }
        stack1.push(node);
    }
    
    public int pop() {
        while(!stack1.empty()){
            stack2.push(stack1.pop());
        }
        return stack2.pop();
    }
}

方法二:
分析


image.png

push()直接添加到stack1中
pop():当stack2中元素不为空时,直接pop()出stack2栈顶元素,当stack2中元素为空时,将stack1中的所有元素添加到stack2中,再返回stack2中的元素即可

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.add(node);
    }
    
    public int pop() {
        if (stack2.size() <= 0) {
            while (stack1.size() != 0) {
                stack2.push(stack1.pop());
            }
        }
        return stack2.pop();
    }
}

相关文章

  • 剑指Offer--(6)用两个栈实现队列

    title: 剑指Offer--(6)用两个栈实现队列 categories: 算法与数据结构 tags: 数据结...

  • 剑指offer--队列、栈(2)

    参考:https://www.cnblogs.com/qmillet/p/12016285.html知识点 : S...

  • 两个栈实现一个队列

    《剑指offer》面试题9:两个栈实现队列 题目:用2个栈实现一个队列,完成队列的push和pop操作 思路:栈1...

  • 两个队列实现一个栈

    《剑指offer》面试题9(相关题目):两个队列实现一个栈。 思路:入栈:如果队列1和队列2都为空,则将元素放入队...

  • LeetCode | 面试题09. 用两个栈实现队列【剑指Off

    LeetCode 面试题09. 用两个栈实现队列【剑指Offer】【Easy】【Python】【栈】【队列】 问题...

  • P61-用两个队列实现一个栈

    法1:《剑指》的思路 代码: C++算法之 两个队列实现一个栈 法2:更加简单 思路: 在实现时使得栈顶等于队列头...

  • 剑指Offer(五)

    剑指Offer(五) 用两个栈实现队列 题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列...

  • 2019-03-14

    【编程题】 用两个栈实现队列 【剑指系列】用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为...

  • 用两个栈实现队列,用两个队列实现堆栈

    参考:剑指Offer面试题7(Java版):用两个栈实现队列与用两个队列实现栈 用两个栈实现队列stack1作为入...

  • 用两个栈实现队列

    《剑指offer》刷题笔记。如有更好解法,欢迎留言。 关键字:栈 队列 题目描述: 用两个栈来实现一个队列,完成队...

网友评论

      本文标题:剑指offer--队列、栈(2)

      本文链接:https://www.haomeiwen.com/subject/qtgwshtx.html