> 백엔드 개발 > PHP 튜토리얼 > 공정한 쌍 수 계산

공정한 쌍 수 계산

Barbara Streisand
풀어 주다: 2024-11-16 17:13:03
원래의
604명이 탐색했습니다.

Count the Number of Fair Pairs

2563. 공정한 쌍 수 계산

난이도:

주제: 배열, 두 포인터, 이진 검색, 정렬

0-인덱스 크기 n의 정수 배열 숫자와 하위 및 상위 두 정수가 주어지면 공정한 쌍의 수를 반환합니다.

(i, j) 쌍은 다음과 같은 경우에 공정합니다.

  • 0

    이 솔루션을 PHP: 2563으로 구현해 보겠습니다. 공정한 쌍 수 계산

    <?php
    /**
    * @param Integer[] $nums
    * @param Integer $lower
    * @param Integer $upper
    * @return Integer
    */
    function countFairPairs($nums, $lower, $upper) {
        ...
        ...
        ...
        /**
         * go to ./solution.php
         */
    }
    
    /**
    * Helper function for binary search to find left boundary
    *
    * @param $arr
    * @param $target
    * @param $start
    * @return int|mixed
    */
    function lowerBound($arr, $target, $start) {
        ...
        ...
        ...
        /**
         * go to ./solution.php
         */
    }
    
    /**
    * Helper function for binary search to find right boundary
    *
    * @param $arr
    * @param $target
    * @param $start
    * @return int|mixed
    */
    function upperBound($arr, $target, $start) {
        ...
        ...
        ...
        /**
         * go to ./solution.php
         */
    }
    
    // Example usage:
    $nums = [0, 1, 7, 4, 4, 5];
    $lower = 3;
    $upper = 6;
    echo countFairPairs($nums, $lower, $upper);  // Output: 6
    ?>
    
    로그인 후 복사

    설명:

    1. 정렬: 이진 검색으로 유효한 쌍을 더 쉽게 찾을 수 있도록 배열 번호를 정렬합니다.
    2. 이진 검색 범위:
      • 각 요소 nums[i]에 대해 합계가 포함되는 경계인 낮은 값과 높은 값을 찾습니다.
      • 2개의 이진 검색을 사용하여 nums[i] nums[j]가 [lower, upper]에 속하는 인덱스 범위 [왼쪽, 오른쪽)를 찾습니다.
    3. 쌍 계산: 각 i에 대해 왼쪽과 오른쪽 사이의 유효한 인덱스 수를 더합니다.

    이 접근 방식은 각 요소에 대한 정렬 및 이진 검색으로 인해 O(n log n)의 시간 복잡도를 가지므로 대규모 입력에 충분히 효율적입니다.

    연락처 링크

    이 시리즈가 도움이 되었다면 GitHub에서 저장소에 별표를 표시하거나 즐겨찾는 소셜 네트워크에서 게시물을 공유해 보세요. 여러분의 지원은 저에게 큰 의미가 될 것입니다!

    이런 유용한 콘텐츠를 더 원하시면 저를 팔로우해주세요.

    • 링크드인
    • 깃허브

위 내용은 공정한 쌍 수 계산의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿