スライディングウィンドウの最大値 - 牛オフ

タイトル説明は
、すべての値のうちの最大値を見つけるために、ウィンドウをスライド、アレイ、およびスライディングウィンドウのサイズを考えます。例えば、スライディングウィンドウ入力配列のサイズ及び{2,3,4,2,6,2,5,1} 3あれば、ウィンドウをスライド6の合計の存在、それらの最大値は{4,4,6-、あります{[2,3,4]、2,6,2,5; 6,6,5}はスライディングウィンドウの次の6つの配列{2,3,4,2,6,2,5,1}を有します、1}、{2、[3,4,2]、6,2,5,1}、{2,3、[4,2,6]、2、5}、{2,3,4 、[2,6,2]、5,1}、{2,3,4,2、[6,2,5]、1}、{2,3,4,2,6、[2,5、 1]}。
溶液:
1、2つのベクトルのアレイ、各スライディングウィンドウに格納された配列のサイズ素子、MAXNUM格納された最大値を定義
)(array.end、2、() (array.begin) *によって最大max_elementを取得
3、によって。ベクトル::イテレータIDX = array.begin() ; array.erase(IDX); 削除配列要素ヘッド

class Solution {
public:
    vector<int> maxInWindows(const vector<int>& num, unsigned int size)
    {
        vector<int> maxnum;//保存最大值
        vector<int> array;//保存每次窗口滑动后的数组
        unsigned int length = num.size();//原num数组的长度
        unsigned int k = 0;//记录遍历num的位置
        
        if (size>length || size<1)
            return maxnum;
        
        while (k < size-1)
            array.push_back(num[k++]);
        
        for (int i=0; i<length-size+1; i++)
        {
            array.push_back(num[k++]);
            maxnum.push_back(*max_element(array.begin(), array.end()));//保存当前滑动窗口内的最大值
            vector<int>::iterator idx = array.begin();
            array.erase(idx);//删除array中头部元素
        }
        return maxnum;
    }
};
公開された315元の記事 ウォンの賞賛119 ビュー110 000 +

おすすめ

転載: blog.csdn.net/w144215160044/article/details/105006589