牛客对于题目连接:栈和排序_牛客题霸_牛客网 (nowcoder.com)
一、分析题目
每次尽可能的先让当前需要的最大值弹出去。
二、代码
// 修改后的代码
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** 栈排序* @param a int整型vector 描述入栈顺序* @return int整型vector*/vector<int> solve(vector<int>& a) {int n=a.size();vector<int> ret;stack<int> st;int maxi = n;int hash[50010]={0};for(int i=0; i<n; i++){int x=a[i];st.push(x);hash[x]=1;while(hash[maxi])maxi--;while(st.size() && st.top()>=maxi){ret.push_back(st.top());st.pop();}}return ret;}
};
三、反思与改进
没有处理好 maxi 的变化,导致下一个数不是比 maxi 小时,输出结果不符合题意。