此题从n,n-1....开始出栈(前提是能够出)
#include<iostream>
#include<stack>
#include<algorithm>
#include<vector>
using namespace std;
const int N=1e6+10;
int a[N];
vector<int> v;//存stk中剩余的数
stack<int> stk;
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++){
int j=n;
stk.push(a[i]);//依次放入栈中
if(a[i]==j){//从n,n-1....开始出栈
stk.pop();
cout<<j<<" ";
--j;
}
}
//当然有未出完的部分
while(!stk.empty()){
v.push_back(stk.top());
stk.pop();
}
for(int i=0;i<v.size();i++){
if(i==v.size()-1) cout<<v[i];
else cout<<v[i]<<' ';
}
return 0;
}
京公网安备 11010502036488号