题解 | #栈和排序#

栈和排序

https://ac.nowcoder.com/acm/contest/22669/A

**题目描述 **

给你一个1->n的排列和一个栈,入栈顺序给定 你要在不打乱入栈顺序的情况下,对数组进行从大到小排序 当无法完全排序时,请输出字典序最大的出栈序列。

输入描述:

第一行一个数n 第二行n个数,表示入栈的顺序,用空格隔开,结尾无空格。

#include <iostream>
#include <vector>
#include <stack>
#include <algorithm>

const int length=1e+6;
class mySolution{
public:
    void printResult(std::vector<int> nums){
        int maxValue[length]={0};
        for(int i=nums.size()-1;i>=0;i--){
            maxValue[i]=std::max(maxValue[i+1],nums[i]);
        }
        std::stack<int> stack;
        for(int i=0;i<nums.size();i++){
            stack.push(nums[i]);
            while(!stack.empty()&&stack.top()>maxValue[i+1]){
                std::cout<<stack.top()<<' ';
                stack.pop();
            }
        }
    }
};

int main(){
    mySolution*solution=new mySolution();
    std::vector<int> nums;
    int n=0;
    std::cin>>n;
    while(n--){
        int val;
        std::cin>>val;
        nums.push_back(val);
    }
    solution->printResult(nums);
    return 0;    
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 14:32
点赞 评论 收藏
分享
05-27 14:57
西北大学 golang
强大的社畜在走神:27届真不用急,可以搞点项目、竞赛再沉淀沉淀,我大二的时候还在天天打游戏呢
投递华为等公司10个岗位
点赞 评论 收藏
分享
投递长鑫存储等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务