1769년. 모든 공을 각 상자로 옮기기 위한 최소 작업 횟수
난이도:중
주제: 배열, 문자열, 접두사 합계
n개의 상자가 있습니다. 길이 n의 이진 문자열 상자가 제공됩니다. 여기서 i번째 상자가 비어 있는 경우 상자[i]는 '0'이고 을 포함하는 경우 '1'입니다. 하나 공.
한 번의 작업으로 한 개의 공을 상자에서 인접한 상자로 이동할 수 있습니다. abs(i - j) == 1인 경우 상자 i는 상자 j에 인접해 있습니다. 그렇게 하면 일부 상자에는 공이 두 개 이상 있을 수 있습니다.
크기 n의 배열 답을 반환합니다. 여기서 답[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 중국어 웹사이트의 기타 관련 기사를 참조하세요!