zoukankan      html  css  js  c++  java
  • 【栈排序】对栈进行排序使最小元素位于栈顶

    试题来源:《程序员面试金典》
    https://leetcode-cn.com/problems/sort-of-stacks-lcci/
    栈排序: 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。

    代码:
    Java:

    class SortedStack {
    
        Stack<Integer> p=new Stack<>();
        Stack<Integer> q=new Stack<>();
    
        public SortedStack() {
    
        }
        
        public void push(int val) {
            if(p.empty())  p.push(val);
            else{
                while(!p.empty()&&p.lastElement()<=val){
                    q.push(p.lastElement());
                    p.pop();
                }
                p.push(val);
                while(!q.empty()){
                    p.push(q.lastElement());
                    q.pop();
                }
            }
        }
        
        public void pop() {
            if(!p.empty())  p.pop();
        }
        
        public int peek() {
            return p.empty()?-1:p.lastElement();
        }
        
        public boolean isEmpty() {
            return p.empty();
        }
    }

    C++:

    class SortedStack {
        stack<int> p;
    public:
        SortedStack() {
    
        }
        
        void push(int val) {
            if(p.size()==0)  p.push(val);
            else{
                stack<int> q;
                while(!p.empty()&&p.top()<val){
                    q.push(p.top());
                    p.pop();
                }
                p.push(val);
                while(!q.empty()){
                    p.push(q.top());
                    q.pop();
                }
            }
        }
        
        void pop() {
            if(p.size()>0)  p.pop();
        }
        
        int peek() {
            return p.size()==0?-1:p.top();
        }
        
        bool isEmpty() {
            return p.empty();
        }
    };
  • 相关阅读:
    springboo 添加logback日志
    logback配置日志输出
    认知升级:提升理解层次的NLP思维框架
    2019第29周日
    《如何有效社交》晨读笔记
    控制论模型&心流模型&波模型
    数学中常见的思维模型
    分布式服务跟踪系统
    Spring Cloud Sleuth
    微服务调用跟踪
  • 原文地址:https://www.cnblogs.com/nibolyoung/p/12371949.html
Copyright © 2011-2022 走看看