栈和队列

栈和队列算法总结

1. 求栈中最小元素,要求o(1)时间复杂度

package yanyingnan.baodian.stack_queue;

import java.util.Stack;
/*o(1)时间复杂度  求栈中最小元素*/
public class Mystack {  
    Stack<Integer> elem;
    Stack<Integer> min;//用两个栈存储,第一个栈正常存元素,第二个栈存当前元素最小值
    public Mystack(){
        elem = new Stack<Integer>();
        min = new Stack<Integer>();
    }
    public void push(int data){
        elem.push(data);
        if(min.isEmpty())
            min.push(data);
        else{
            if(data<min.peek())
                min.push(data);
        }
    }
    public int pop(){
        int top = elem.pop();
        //elem.pop();
        if(top == this.min())
            min.pop();
        return top;
    }
    public int min(){
        if(min.isEmpty())
            return Integer.MAX_VALUE;
        else
            return min.peek();
    }
}

(完成)两个栈模拟队列

import java.util.Stack;

/*两个栈模拟队列*/
public class StackToQueue {
    Stack<Integer> s1 = new Stack<Integer>();
    Stack<Integer> s2 = new Stack<Integer>();

    public void push(int node) {//模拟进队列
        s1.push(node);
    }

    public int pop() {          //模拟出队列
        while(!s2.empty()){     //这个算法的精髓实际上就在这个while  stack继承vector isEmpty()是vector中的方法  也可以用
            return s2.pop();
        }
        while(!s1.empty()){
            s2.push(s1.pop());
        }
        return s2.pop();
    }
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yanyingnan1357/article/details/80336702
文章标签: 数据结构 队列
个人分类: 算法与数据结构
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭