大根堆和小根堆的定义理解:
greater表示小根堆,less表示大根堆
class Solution {
public:
vector<int> maxstack(vector<int>& arr) {
vector<int>result;
priority_queue<int, vector<int>, greater<int>> maxst;
for (int i = 0; i < arr.size(); i++) {
maxst.push(arr[i]);
}
for (int i = 0; i < arr.size(); i++) {
result.push_back(maxst.top());
maxst.pop();
}
return result;
}
vector<int> minstack(vector<int>& arr) {
vector<int>result;
priority_queue<int, vector<int>, less<int>>minst;
for (int i = 0; i < arr.size(); i++) {
minst.push(arr[i]);
}
for (int i = 0; i < arr.size(); i++) {
result.push_back(minst.top());
minst.pop();
}
return result;
}
};
int main() {
vector<int> arr = { 49,38,65,97,76,13,27,49 };
Solution ss;
vector<int> nums = ss.maxstack(arr);
for (auto& num : nums) {
cout << num << " ";//13 27 38 49 49 65 76 97
}
cout << endl;
vector<int> arrs = ss.minstack(arr);
for (auto& ch : arrs) {
cout << ch << " ";//97 76 65 49 49 38 27 13
}
return 0;
}