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中文网其他相关文章!