- 给定长度为n的序列,对每一个1<=k<=n,求解所有长度为k的连续子序列的最大值中的最小值
#include <iostream>
#include <string>
#include <vector>
#include <queue>
using namespace std;
vector<int> function(vector<int> sums, int n) {
vector<int> cur;
if (sums.size() != n) return cur;
priority_queue<int> maxHeap;
priority_queue<int, vector<int>, greater<int>> minHeap;
for (int i = 0; i < n; ++i) {
int k = i + 1;
for (int j = 0; j < n; j = j + k) {
int l = k;
while (l--)
maxHeap.push(sums[j++]);
minHeap.push(maxHeap.top());
while (!maxHeap.empty())
maxHeap.pop();
}
cur.push_back(minHeap.top());
while (!minHeap.empty())
minHeap.pop();
}
return cur;
}
int main() {
int n = 6;
vector<int> res = {1,3,2,4,6,5};
res = function(res, n);
for(int a:res){
cout<<a<<" ";
}
cout<<endl;
system("pause");
return 0;
}