• 【栈排序】对栈进行排序使最小元素位于栈顶


    试题来源:《程序员面试金典》
    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();
        }
    };
  • 相关阅读:
    mysql备份还原
    JavaScript位移运算多个大于号的使用方法
    js with 语句的用法
    公告栏文字滚动
    Tar打包、压缩与解压缩到指定目录的方法
    域名跳转汇总文章
    linux常用命令大全
    nginx添加多站点
    linux一键安装php环境
    linux安装unzip及使用
  • 原文地址:https://www.cnblogs.com/nibolyoung/p/12371949.html
Copyright © 2020-2023  润新知