zoukankan      html  css  js  c++  java
  • 剑指Offer09.用两个栈实现队列

    思路1

    • stack1负责所有操作,stack2只是个过客,辅助stack1

    代码

    //405ms
    public class CQueue {
        Stack<Integer> stack1;
        Stack<Integer> stack2;
        public CQueue() {
            this.stack1=new Stack<>();
            this.stack2=new Stack<>();
        }
    
        public void appendTail(int value) {
            stack1.add(value);
        }
    
        public int deleteHead() {
            if(stack1.isEmpty()) return -1;
            while(!stack1.isEmpty()&&stack1.size()>1){
                stack2.add(stack1.pop());
            }
            int res=stack1.pop();
            while(!stack2.isEmpty()){
                stack1.add(stack1.pop());
            }
            return res;
        }
    }
    

    思路2

    • stack1负责入队列,stack2负责出队列

    代码

    //66ms
    public class CQueue2 {
        //负责入队列
        Stack<Integer> stack1;
        //负责出队列
        Stack<Integer> stack2;
    
        public CQueue2() {
            this.stack1 = new Stack<>();
            this.stack2 = new Stack<>();
        }
    
        public void appendTail(int value) {
            stack1.push(value);
        }
    
        public int deleteHead() {
            if(!stack2.isEmpty()){
                return stack2.pop();
            }else{
                while (!stack1.isEmpty()){
                    stack2.push(stack1.pop());
                }
                return stack2.isEmpty()?-1:stack2.pop();
            }
        }
    
    }
    
  • 相关阅读:
    hdu 2709 Sumsets
    hdu 2004 成绩转换
    hihocoder 1043 完全背包
    hihocoder 1038 01背包
    hihocoder 1066 无间道之并查集
    并查集小结
    hdu 1232 畅通工程
    并查集学习2
    并查集知识学习
    js 禁止表单提交的方法(文件上传)
  • 原文地址:https://www.cnblogs.com/yh-simon/p/13215473.html
Copyright © 2011-2022 走看看