Rumah pembangunan bahagian belakang tutorial php Kira Bilangan Pasangan Adil

Kira Bilangan Pasangan Adil

Nov 16, 2024 pm 05:13 PM

Count the Number of Fair Pairs

2563. Kira Bilangan Pasangan Adil

Kesukaran: Sederhana

Topik: Tatasusunan, Dua Penunjuk, Carian Binari, Isih

Diberikan 0-diindeks nombor tatasusunan integer bersaiz n dan dua integer bawah dan atas, kembalikan bilangan pasangan saksama.

Sepasang (i, j) adalah adil jika:

  • 0 <= i < j < n, dan
  • bawah <= nums[i] nums[j] <= atas

Contoh 1:

  • Input: nombor = [0,1,7,4,4,5], bawah = 3, atas = 6
  • Output: 6
  • Penjelasan: Terdapat 6 pasangan adil: (0,3), (0,4), (0,5), (1,3), (1,4), dan (1,5) .

Contoh 2:

  • Input: nombor = [1,7,9,2,5], bawah = 11, atas = 11
  • Output: 1
  • Penjelasan: Terdapat satu pasangan adil: (2,3).

Kekangan:

  • 1 <= nums.length <= 105
  • bilangan panjang == n
  • -109 <= nums[i] <= 109
  • -109 <= bawah <= atas <= 109

Petunjuk:

  1. Isih tatasusunan dalam tertib menaik.
  2. Untuk setiap nombor dalam tatasusunan, jejaki nombor terkecil dan terbesar dalam tatasusunan yang boleh membentuk pasangan saksama dengan nombor ini.
  3. Apabila anda beralih ke nombor yang lebih besar, kedua-dua sempadan bergerak ke bawah.

Penyelesaian:

Kita boleh menggunakan pendekatan berikut:

  1. Isih Tatasusunan: Isih membantu kami memanfaatkan teknik dua mata dan melakukan carian binari dengan lebih berkesan.
  2. Teknik Dua Penunjuk: Untuk setiap elemen dalam tatasusunan yang diisih, kita boleh mengira julat elemen yang boleh membentuk pasangan saksama dengannya. Kami menggunakan carian binari untuk mencari julat ini.
  3. Carian Perduaan untuk Had: Untuk setiap elemen nums[i], cari julat [bawah, atas] - nums[i] untuk j > i. Kami menggunakan carian binari untuk mencari indeks terkecil dan terbesar yang memenuhi julat ini.
  4. Mari laksanakan penyelesaian ini dalam PHP: 2563. Kira Bilangan Pasangan Adil

    &lt;?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
    ?&gt;
    
    Salin selepas log masuk

    Penjelasan:

    1. Isih: Kami mengisih nombor tatasusunan untuk memudahkan mencari pasangan yang sah dengan carian binari.
    2. Sempadan Carian Binari:
      • Untuk setiap elemen nums[i], kita dapati nilai rendah dan tinggi, yang merupakan had yang kita mahu jumlahnya termasuk.
      • Kami menggunakan dua carian binari untuk mencari julat indeks [kiri, kanan) di mana nums[i] nums[j] berada dalam [bawah, atas].
    3. Mengira Pasangan: Kami menambah kiraan indeks yang sah antara kiri dan kanan untuk setiap i.

    Pendekatan ini mempunyai kerumitan masa O(n log n) disebabkan oleh pengisihan dan carian binari untuk setiap elemen, yang cukup cekap untuk input yang besar.

    Pautan Kenalan

    Jika anda mendapati siri ini membantu, sila pertimbangkan untuk memberi repositori bintang di GitHub atau berkongsi siaran pada rangkaian sosial kegemaran anda ?. Sokongan anda amat bermakna bagi saya!

    Jika anda mahukan kandungan yang lebih berguna seperti ini, sila ikuti saya:

    • LinkedIn
    • GitHub

    Atas ialah kandungan terperinci Kira Bilangan Pasangan Adil. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

11 skrip pemendek URL terbaik PHP (percuma dan premium) 11 skrip pemendek URL terbaik PHP (percuma dan premium) Mar 03, 2025 am 10:49 AM

11 skrip pemendek URL terbaik PHP (percuma dan premium)

Pengenalan kepada API Instagram Pengenalan kepada API Instagram Mar 02, 2025 am 09:32 AM

Pengenalan kepada API Instagram

Bekerja dengan Data Sesi Flash di Laravel Bekerja dengan Data Sesi Flash di Laravel Mar 12, 2025 pm 05:08 PM

Bekerja dengan Data Sesi Flash di Laravel

Respons HTTP yang dipermudahkan dalam ujian Laravel Respons HTTP yang dipermudahkan dalam ujian Laravel Mar 12, 2025 pm 05:09 PM

Respons HTTP yang dipermudahkan dalam ujian Laravel

Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST Mar 14, 2025 am 11:42 AM

Curl dalam PHP: Cara Menggunakan Pelanjutan PHP Curl dalam API REST

Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React Mar 04, 2025 am 09:33 AM

Bina aplikasi React dengan hujung belakang Laravel: Bahagian 2, React

12 skrip sembang php terbaik di codecanyon 12 skrip sembang php terbaik di codecanyon Mar 13, 2025 pm 12:08 PM

12 skrip sembang php terbaik di codecanyon

Pemberitahuan di Laravel Pemberitahuan di Laravel Mar 04, 2025 am 09:22 AM

Pemberitahuan di Laravel

See all articles