1769。將所有球移到每個盒子的最少操作次數
難度:中
主題:陣列、字串、前綴和
你有n個盒子。給定一個長度為n 的二進位字串box,其中,如果第ith 框為空,則box[i] 為“0”,如果包含,則為「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中文網其他相關文章!