滑动窗口问题
来源:互联网 发布:03年搞笑网络歌曲 编辑:程序博客网 时间:2024/06/07 16:26
Judge:http://dsalgo.openjudge.cn/stackqueue/7/
题意:给定一个长度为n(n<=10^6)的数组。有一个大小为k的滑动窗口从数组的最左端移动到最右端。求滑动窗口在每个位置时的最大值和最小值。
总时间限制:12000ms
可以使用单调队列来做这道题。
#include <cstdio>#include <deque>using namespace std;#define MODE_MAX1#define MODE_MIN0int g_iNumTot, g_iWndLen, g_arrNum[1000010];deque<int> g_queHumMin, g_queHumMax;void InsertQueue(deque<int> & theQueue, int iMode, int iData){int iSize = theQueue.size();for (int i = 1; i <= iSize; i++)if (iMode == MODE_MAX && theQueue.back() < iData)theQueue.pop_back();else if (iMode == MODE_MIN && theQueue.back() > iData)theQueue.pop_back();elsebreak;theQueue.push_back(iData);}int g_arrResMin[1000000], g_arrResMax[1000000];int main(){scanf("%d%d", &g_iNumTot, &g_iWndLen);int iNum;for (int i = 1; i <= g_iNumTot; i++){scanf("%d", &iNum);g_arrNum[i] = iNum;if (i <= g_iWndLen){InsertQueue(g_queHumMin, MODE_MIN, iNum);InsertQueue(g_queHumMax, MODE_MAX, iNum);if (i < g_iWndLen)continue;}if (i > g_iWndLen){if (g_queHumMin.front() == g_arrNum[i - g_iWndLen])g_queHumMin.pop_front();if (g_queHumMax.front() == g_arrNum[i - g_iWndLen])g_queHumMax.pop_front();InsertQueue(g_queHumMin, MODE_MIN, iNum);InsertQueue(g_queHumMax, MODE_MAX, iNum);}g_arrResMin[i - g_iWndLen] = g_queHumMin.front();g_arrResMax[i - g_iWndLen] = g_queHumMax.front();}for (int i = 0; i < g_iNumTot - (g_iWndLen - 1); i++)printf("%d ", g_arrResMin[i]);printf("\n");for (int i = 0; i < g_iNumTot - (g_iWndLen - 1); i++)printf("%d ", g_arrResMax[i]);return 0;}
阅读全文
0 0
- 滑动窗口问题
- 滑动窗口问题
- 字符串的窗口滑动问题
- 滑动窗口的最小值问题
- 滑动窗口
- 滑动窗口
- 滑动窗口
- 滑动窗口。。
- 滑动窗口
- 窗口滑动
- 滑动窗口
- 滑动窗口
- 滑动窗口
- 滑动窗口
- 滑动窗口
- 滑动窗口
- 滑动窗口
- 滑动窗口
- 如何在macOS中找到anaconda里的QT Designer
- 公司实习十天的总结
- springdata的步骤
- Kendo UI:Grid自定义command实现对行数据的操作
- React引用数据类型与immutable.js的使用实例
- 滑动窗口问题
- 集合与数组的比较、Collection与Collections的区别、ArrayList与LinkedList区别、Vector与ArrayList区别、HashMap与Hashtable
- 再读《重构-改善既有代码的设计》
- jzoj1274. 游历的路线
- SSD(固态硬盘)编程
- android开发 -TabHost控件
- 面试云计算岗位时最常遇到的40个问题
- Windows 和 android 平台Boost编译方法
- LinkedList