例如:int arr[] = {4,2,5,1,9,10,8};
int k = 3;
=>输出每3个连续的数的最大值5,5,9,10,10,最小值2,1,1,1,8
/*
滑动窗口
*/
//利用双端队列
void getMaxNumOfWindow(int* arr, int len, int k, vector<int>& res) {
if (arr && len && k && len >= k) {
int index = 0;
deque<int>deq;
for (int i = 0; i <= len - 1; i++){
//若是求最小值arr[deq[deq.size() - 1]] >= arr[i]
while (deq.size() && (arr[deq[deq.size() - 1]] <= arr[i])) {
deq.pop_back();
}
deq.push_back(i);
if (i - deq.front() == k) {
deq.pop_front();
}
if (i >= k - 1) {
res[index++] = arr[deq.front()];
}
}
}
}