安全な質問を証明オファー59_1-最大表面スライディングウィンドウを - 配列を

/ * 
タイトル:
	リンクします。https://www.nowcoder.com/questionTerminal/1624bc35a45c42c0bc17d17fa0cba788 
	出典:最大のすべての値を見つけるために、ウィンドウをスライド、アレイのサイズ及びスライディングウインドウ所与のネットワークオフ牛。例えば、スライディングウィンドウ入力配列のサイズ及び{2,3,4,2,6,2,5,1} 3あれば、
	次にウィンドウをスライド6の合計の存在、それらの最大値は{4,4,6-、あります6,6,5};それはスライディングウィンドウの次の6つの配列{2,3,4,2,6,2,5,1}有する:       
	{[2,3,4]を、2,6,2,5 、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]}。
* / 
/ * 
アイデア:
	注符号なし減算
* / 
書式#include <iostreamの> 
の#include <cstdlib> 
書式#include <スタック> 
の#include <文字列> 
の#include <ベクトル> 
の#include <デック> 

使用して、名前空間STD; 

ベクトル<整数> maxInWindows(constのベクトル<整数>& NUM、
    ベクトル<整数>のres; 
    INT長= num.size()。
    INT端=長さ-サイズ。
    ;(エンド<0 ||サイズ<1)戻りRES場合 
    両端キュー<整数>ウィンドウ; 
    = 0を開始INT。
    以下のために(INT iが= 0; I <長さ、I ++){ 
        IF(!window.empty()){ 
            IF(window.front()== I -サイズ){ 
                window.pop_front()。
            } 
            ながら(!window.empty()&& NUM [window.back()<= NUM [I]){ 
                window.pop_back()。
            } 
        } 
        window.push_back(I)。
        (I + 2>サイズ){もし
          res.push_back(NUM [window.front()])。
        } 

    } 
    RESを返します。


} 


int型のmain()
{ 
    ベクトル<整数> A = {10,14,12,11}。
    ベクター<整数> B = maxInWindows(A、1); 
    {(I ++; I <B.size()intは、I = 0)するための
        COUT << B [i]は<<」「。
    } 



}

   

おすすめ

転載: www.cnblogs.com/buaaZhhx/p/12114982.html
おすすめ