バイナリ配列は、数値 0 と 1 のみを含む特別なタイプの配列です。この問題では、バイナリ配列と整数 K が与えられます。私たちのタスクは、2 つの 1 の間に少なくとも K 個の 0 が存在するように、指定されたバイナリ配列で 1 に反転できる 0 の最大数を計算することです。
上記の配列の 3 番目と 6 番目のインデックスは唯一の有効なインデックスであり、2 つの 1 の間に少なくとも 2 つの 0 が存在するように反転することができます。したがって、結果の配列は {1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0}
となります。 リーリー リーリー上記の配列の 3 番目のインデックスが唯一の有効な反転インデックスです。
###アプローチ###この方法のアイデアは、2 つの 1 の間に連続する 0 の数を数え、それらの間のいくつかの 0 を 1 に反転することが適切かどうかを確認することです。 2 つの 1 の間に X 個のゼロがあると仮定します。観測によれば、反転できる 0 の数は (X-K) / (K 1) です。したがって、配列を反復処理して、1 の各ペアの間に連続する 0 が何個あるかを記録します。次に、反転できる 0 の数を変数 count に加算します。これが目的の応答になります。
次の方法について段階的に説明します -
配列をトラバースするだけなので、上記のコードの時間計算量は O(N) です。ここで、N は指定された配列のサイズです。 余分なスペースを使用していないため、上記のコードのスペース複雑さは O(1) です。
###結論は###このチュートリアルでは、2 つの 1 の間に少なくとも K 個の 0 が存在するように、指定されたバイナリ配列で反転する 0 の最大数を見つけるプログラムを実装しました。この問題は、2 つの 1 の間に連続する 0 の数を数え、それらの間のいくつかの 0 を反転することが適切かどうかを確認することで解決されます。時間計算量は O(N)、空間計算量は O(1) です。ここで、N は文字列のサイズです。
以上が2 つの 1 の間に少なくとも K 個の 0 が存在するように、指定されたバイナリ配列で反転する 0 の数を最大化します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。