题解 | 栈和排序

栈和排序

https://www.nowcoder.com/practice/b10a7ac681e9429e89a6a510e5799647

#include <iostream>
#include<vector>
#include<stack>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    cin>>n;
    vector<int>p(n);
    for(int i=0;i<n;i++){
        cin>>p[i];
    }
    stack<int>st;
    vector<int>res;
    int max_p=n;
    for(int num:p){
        st.push(num);
        while(!st.empty()&&st.top()==max_p){
            res.push_back(st.top());
            st.pop();
            max_p--;
        }
    }
    for(size_t i=0;i<res.size();i++){
        if(i>0)cout<<" ";
        cout<<res[i];
    }
    while(!st.empty()){
        cout<<" "<<st.top();
        st.pop();
    }
    cout<<endl;
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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