今天碰到这个问题,第一反应是队列(网上一堆用队列),但是本着能不用队列就用队列的思路,代码如下(C++).另外如果本意是如果size大于数组长度,还是要输出一次最大值,那注释掉的那两行加上,并改动判空条件。仅供参考。
vector<int> maxInWindows(const vector<int>& num, unsigned int size)
{
vector<int> max;
if(num.empty() || size<=0 || size>num.size())
return max;
int vector_size = num.size();
for(auto i=0; i<vector_size; i++)
{
int maxvalue = num[i];
for(auto j=i;j<i+size;j++)
{
//if(j==vector_size)
//break;
if(num[j] > maxvalue)
maxvalue = num[j];
}
max.push_back(maxvalue);
if( i+size >= vector_size )
break;
}
return max;
}