タイトル説明
すべての値のうちの最大値を見つけるために、ウィンドウをスライド、アレイ、およびスライディングウィンドウのサイズを考えます。例えば、入力配列のサイズ及び{2,3,4,2,6,2,5,1} 3は、スライディングウィンドウ場合、次いで、それらの最大値は、{4,4,6- 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]}。
問題解決のためのアイデア
配列を通じて、キューがデジタルウィンドウサイズがロードされ、キューの最大数は、に行きます
コードは以下の通りです
パブリック クラスMaxInWindows {
公共のArrayList <整数> maxInWindows(INT [] NUM、int型のサイズ)
{
場合(サイズ== 0 || num.lengthが== 0 ){
戻り 新規のArrayList <整数> ();
} 他{
のArrayList <整数>リスト= 新規のArrayList <整数> ();
以下のために(int型 i = 0; iは<num.lengthサイズ+ 1; I ++ ){
キュー <整数>キュー= 新しい LinkedListの<整数> ();
にとって(int型 J = I; J <iはサイズ+; J ++ ){
queue.add(NUM [J])。
}
int型の最大値= はInteger.MIN_VALUE。
以下のための(整数整数:キュー){
最大 = Math.max(MAX、整数);
}
list.add(MAX)。
}
戻りリスト。
}
}
パブリック 静的 ボイドメイン(文字列[]引数){
MaxInWindows maxInWindows = 新しいMaxInWindows()。
INT [] NUM = 新しい int型[] {2,3,4,2,6,2,5,1 }。
ArrayList <整数>リスト= maxInWindows.maxInWindows(NUM、3 )。
以下のための(整数整数:リスト){
System.out.printlnは(整数)。
}
}
}