1769年。すべてのボールを各ボックスに移動するための最小操作数
難易度: 中
トピック: 配列、文字列、プレフィックス合計
n 個のボックスがあります。長さ n のバイナリ文字列ボックスが与えられます。ここで、ボックス[i]は、i番目ボックスが空の場合は「0」、ボックスにが含まれている場合は「1」になります。 ボール 1 つ。
1 回の操作で、1 個 個のボールをボックスから隣接するボックスに移動できます。 abs(i - j) == 1 の場合、ボックス i はボックス j に隣接します。そうした後、一部のボックスに複数のボールが存在する可能性があることに注意してください。
サイズ n の配列回答 を返します。ここで、answer[i] は、すべてのボールを i 番目 ボックスに移動するのに必要な 最小 操作数です.
各答え[i]は、ボックスの初期状態を考慮して計算されます。
例 1:
例 2:
制約:
ヒント:
解決策:
接頭辞合計 アプローチを使用すると、各操作を明示的にシミュレートせずに、すべてのボールを各ボックスに移動するのに必要な最小操作数を計算できます。
このソリューションを PHP で実装してみましょう: 1769。すべてのボールを各ボックスに移動するための最小操作数
<?php /** * @param String $boxes * @return Integer[] */ function minOperations($boxes) { ... ... ... /** * go to ./solution.php */ } // Example usage: $boxes = "110"; print_r(minOperations($boxes)); // Output: [1,1,3] $boxes = "001011"; print_r(minOperations($boxes)); // Output: [11,8,5,4,3,4] ?>
$boxes = "110"; print_r(minOperations($boxes));
出力:
Array ( [0] => 1 [1] => 1 [2] => 3 )
$boxes = "001011"; print_r(minOperations($boxes));
出力:
Array ( [0] => 11 [1] => 8 [2] => 5 [3] => 4 [4] => 3 [5] => 4 )
このソリューションは、プレフィックス合計手法を使用して各ボックスの最小演算数を効率的に計算します。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
以上がすべてのボールを各ボックスに移動するための最小操作数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。