美文网首页
两个栈实现一个堆

两个栈实现一个堆

作者: 响响月月 | 来源:发表于2018-10-18 10:16 被阅读0次

终极版

  1. 入栈push:push到stack1中,如果满了,报错。
  2. 出栈pop: 若stack1,stack2都空,报错;
    若stack2不为空,从stack2中pop一个;
    若stack2空,将stack1倒入stack2,将最后一个pop出来。

图示

Java代码实现

class StackQueue {
        Stack<Integer> stack1 = new Stack<>();
        Stack<Integer> stack2 = new Stack<>();
        public void push(int item) {
            stack1.push(item);
        }
        public Integer pop() throws Exception{
            if (stack1.empty() && stack2.empty()) {
                System.out.println("empty");
                throw new Exception();
            }
            if (stack2.empty()) {
                while (stack1.size() > 1) {
                    stack2.push(stack1.pop());
                }
                return stack1.pop();
            } else {
                return stack2.pop();
            }
        }
    }
+ push 1, 2, 3
stack1=[1, 2, 3], stack2=[]
- pop: 1
stack1=[1], stack2=[3, 2]  //stack1倒入stack1, 把stack1最后一个pop
stack1=[], stack2=[3, 2]
+ push 4, 5
stack1=[4, 5], stack2=[3, 2]
- pop: 2
stack1=[4, 5], stack2=[3]
- pop: 3
stack1=[4, 5], stack2=[]
- pop: 4
stack1=[4], stack2=[5]  //stack1倒入stack1, 把stack1最后一个pop
stack1=[], stack2=[5]
- pop: 5
stack1=[], stack2=[]
- pop: empty

相关文章

  • 两个栈实现一个堆

    终极版 入栈push:push到stack1中,如果满了,报错。出栈pop: 若stack1,stack2都空,报...

  • 队列、栈

    两个队列实现一个栈 两个栈实现一个队列

  • 栈和队列的相互实现

    两个栈实现队列: 一个栈用来入,一个栈用来出 两个队列实现栈: 入栈的时候正常存入一个队列,出栈的时候用另一个队列...

  • 栈和队列

    两个栈实现队列 两个队列实现栈

  • 招银网络一面

    栈和堆的区别 用两个栈实现一个队列 说一说b+树 怎样建唯一索引,说一下他们的优缺点 LRU, 怎样实现一个LRU...

  • js/jquery 学习笔记

    理解JavaScript中的堆和栈 这里先说两个概念:1、堆(heap)2、栈(stack)堆是堆内存的简称。栈是...

  • 2021-12-06

    leetcode 用两个栈实现队列 须知:Python的栈的pop( )函数返回栈顶元素 思路: 两个栈 一个栈...

  • 【剑指offer】问题9:用两个栈实现队列

    题目一:用两个栈实现一个队列。 先上代码。 用两个栈实现一个队列,一个只用来压栈(stack1),一个只用来出栈(...

  • 队列和栈的相互转化

    1. 用两个栈实现一个队列 实现代码: 2. 用两个队列实现一个栈 因为push的时候是往任意一个不为空的栈里添加...

  • 总结的笔试/面试算法题

    目录 1. 栈和队列1.用两个队列实现栈2.用两个栈实现队列3.实现一个栈,可以用常数级时间找出栈中的最小值4.判...

网友评论

      本文标题:两个栈实现一个堆

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