この問題には、2*min が max より大きくなるように、整数のリストの両側から要素を削除することが含まれます。
リーリーブルートフォース手法を使用することもできます。考えられるすべての条件を試して、条件 2*min > max を満たす最長の部分配列を見つけることができます。動的プログラミング手法を使用して、考えられる過剰で不要な部分配列の組み合わせをすべて試すこともできます。
「[250, 10, 11, 12, 19, 200]」のような配列があるとします。最良の解決策を得るには、要素 [250, 200] を削除して配列 [10, 11, 12, 19] (最小値が 10、最大値が 19) を形成する必要があります。したがって、2*10 > 19 となります。配列から出力しているため、出力は 2 です。
以下は、最小値の 2 倍が最大値よりも大きくなるように、配列から最小数の要素を削除する方法を説明する C プログラムです -
リーリー ###出力### リーリーここでは、総当たり法を使用して最長の部分配列を見つけます。他に考えられる解決策としては、両側から要素を繰り返しポップすることや他の方法で、可能なすべてのサブ配列をチェックすることが考えられます。それにもかかわらず、その実装には労力がかかり、最適化も不十分です。すべてのサブ配列をすでに反復しているため、ここでの時間計算量は O(n^2) です。
以上が2* 最小値が最大値より大きくなるように、両側から最小の要素を削除する C++ プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。