题解 | #栈和排序#
栈和排序
https://www.nowcoder.com/practice/95cb356556cf430f912e7bdf1bc2ec8f?tpId=117&tqId=37839&rp=1&ru=/exam/oj&qru=/exam/oj&sourceUrl=%2Fexam%2Foj%3Fpage%3D3%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D117&difficulty=undefined&judgeStatus=undefined&tags=&title=
class Solution {
public:
/**
* 栈排序
* @param a int整型一维数组 描述入栈顺序
* @param aLen int a数组长度
* @return int整型vector
*/
vector<int> solve(vector<int> &nums) {
// write code here
unordered_set<int> set;
stack<int> st;
vector<int> ans;
int n = nums.size();
ans.reserve(n);
int index = n;
for (const auto &a : nums) {
st.push(a);
if ((set.count(index) == false) && a != index) {
set.insert(a);
continue;
}
while (!st.empty() && st.top() == index) {
ans.emplace_back(st.top());
set.erase(st.top());
st.pop();
while (set.count(--index) == true && st.top() != index);
}
}
while (!st.empty()) {
ans.emplace_back(st.top());
st.pop();
}
return ans;
}
};
海康威视公司福利 1182人发布
查看18道真题和解析