cari

Cari Juara II

Dec 16, 2024 pm 02:24 PM

2924. Cari Juara II

Kesukaran: Sederhana

Topik: Graf

Terdapat n pasukan bernombor dari 0 hingga n - 1 dalam kejohanan; setiap pasukan juga merupakan nod dalam DAG.

Anda diberi integer n dan 0-diindeks tepi tatasusunan integer 2D dengan panjang m mewakili DAG, dengan >dges[i] = [u i, vi] menunjukkan bahawa terdapat kelebihan terarah daripada pasukan ui kepada pasukan vi dalam graf.

Tepi terarah dari a ke b dalam graf bermakna pasukan a lebih kuat daripada pasukan b dan pasukan b lebih lemah daripada pasukan a.

Pasukan a akan menjadi juara kejohanan jika tiada pasukan b yang lebih kuat daripada pasukan a.

Kembali pasukan yang akan menjadi juara kejohanan jika ada juara unik, jika tidak, pulangkan -1.

Nota

  • A kitaran ialah satu siri nod a1, a2, ..., an, an 1 supaya nod a1 ialah nod yang sama dengan nod an 1, nod a1, a2, ..., an adalah berbeza dan terdapat diarahkan tepi daripada nod ai ke nod ai 1 untuk setiap i dalam julat [1, n].
  • A DAG ialah graf terarah yang tidak mempunyai sebarang kitaran.

Contoh 1:

Find Champion II

  • Input: n = 3, tepi = [[0,1],[1,2]]
  • Output: 0
  • Penjelasan: Pasukan 1 lebih lemah daripada pasukan 0. Pasukan 2 lebih lemah daripada pasukan 1. Jadi juara adalah pasukan 0.

Contoh 2:

Find Champion II

  • Input: n = 4, tepi = [[0,2],[1,3],[1,2]]
  • Output: -1
  • Penjelasan: Pasukan 2 lebih lemah daripada pasukan 0 dan pasukan 1. Pasukan 3 lebih lemah daripada pasukan 1. Tetapi pasukan 1 dan pasukan 0 tidak lebih lemah daripada pasukan lain. Jadi jawapannya ialah -1.

Kekangan:

  • 1
  • m == tepi.panjang
  • 0
  • tepi[i].panjang == 2
  • 0
  • tepi[i][0] != tepi[i][1]
  • Input dijana supaya jika pasukan a lebih kuat daripada pasukan b, pasukan b tidak lebih kuat daripada pasukan a.
  • Input dijana supaya jika pasukan a lebih kuat daripada pasukan b dan pasukan b lebih kuat daripada pasukan c, maka pasukan a lebih kuat daripada pasukan c.

Petunjuk:

  1. Juara sepatutnya mendapat darjah 0 dalam DAG.

Penyelesaian:

Kami perlu mengenal pasti pasukan dengan darjah 0 dalam Graf Akiklik Berarah (DAG) yang diberikan. Pasukan tanpa kelebihan masuk mewakili pasukan yang tiada pasukan lain lebih kuat daripadanya, menjadikan mereka calon untuk menjadi juara. Sekiranya terdapat satu pasukan dengan darjah 0, ia adalah juara yang unik. Jika terdapat berbilang atau tiada pasukan sedemikian, keputusannya ialah -1.

Mari laksanakan penyelesaian ini dalam PHP: 2924. Cari Juara II

<?php /**
 * @param Integer $n
 * @param Integer[][] $edges
 * @return Integer
 */
function findChampion($n, $edges) {
    // Initialize in-degrees for all teams
    $inDegree = array_fill(0, $n, 0);

    // Calculate the in-degree for each team
    foreach ($edges as $edge) {
        $inDegree[$edge[1]]++;
    }

    // Find teams with in-degree 0
    $candidates = [];
    for ($i = 0; $i < $n; $i++) {
        if ($inDegree[$i] == 0) {
            $candidates[] = $i;
        }
    }

    // If exactly one team has in-degree 0, return it; otherwise, return -1
    return count($candidates) === 1 ? $candidates[0] : -1;
}

// Example 1
$n1 = 3;
$edges1 = [[0, 1], [1, 2]];
echo "Example 1 Output: " . findChampion($n1, $edges1) . PHP_EOL; // Output: 0

// Example 2
$n2 = 4;
$edges2 = [[0, 2], [1, 3], [1, 2]];
echo "Example 2 Output: " . findChampion($n2, $edges2) . PHP_EOL; // Output: -1
?>

Penjelasan:

  1. Penghuraian Input:

    • n ialah bilangan pasukan.
    • tepi ialah senarai tepi terarah dalam graf.
  2. Memulakan Dalam Darjah:

    • Buat tatasusunan dalam Darjah saiz n yang dimulakan kepada 0.
  3. Kira Dalam Darjah:

    • Untuk setiap tepi [u, v], naikkan dalam darjah v (pasukan v mempunyai satu lagi kelebihan masuk).
  4. Cari Calon:

    • Lelar melalui tatasusunan inDegree dan kumpulkan indeks di mana dalam darjah ialah 0. Indeks ini mewakili pasukan tanpa pasukan lain yang lebih kuat.
  5. Tentukan Johan:

    • Jika betul-betul satu pasukan mempunyai darjah 0, ia adalah juara yang unik.
    • Jika beberapa pasukan atau tiada pasukan mempunyai darjah 0, kembalikan -1.

Contoh Panduan

Contoh 1:

  • Input: n = 3, tepi = [[0, 1], [1, 2]]
  • Dalam ijazah: [0, 1, 1]
  • Pasukan dengan dalam darjah 0: [0]
  • Output: 0 (Pasukan 0 ialah juara unik).

Contoh 2:

  • Input: n = 4, tepi = [[0, 2], [1, 3], [1, 2]]
  • Dalam ijazah: [0, 0, 2, 1]
  • Pasukan dengan dalam darjah 0: [0, 1]
  • Output: -1 (Terdapat berbilang juara berpotensi).

Analisis Kerumitan

  1. Kerumitan Masa:

    • Pengiraan dalam darjah: O(m), dengan m ialah bilangan tepi.
    • Memeriksa pasukan: O(n), dengan n ialah bilangan pasukan.
    • Jumlah: O(n m).
  2. Kerumitan Angkasa:

    • tatasusunan inDegree: O(n).

Penyelesaian ini cekap dan berfungsi dalam kekangan yang diberikan.

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 Cari Juara II. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
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
Cara membuat aplikasi php lebih cepatCara membuat aplikasi php lebih cepatMay 12, 2025 am 12:12 AM

Tomakephpapplicationsfaster, ikutiTheseSteps: 1) UseopcodecachinglikeopcachetostorePrecompiledscriptbytecode.2) minimizedatabasequeriesbyusingquerycachingandeficientindexing.3)

Senarai Semak Pengoptimuman Prestasi PHP: Meningkatkan Kelajuan SekarangSenarai Semak Pengoptimuman Prestasi PHP: Meningkatkan Kelajuan SekarangMay 12, 2025 am 12:07 AM

ToimprovePhpapPlicationspeed, ikutiTheSesteps: 1) EnableopCodeCachingWithApcutoreduceScriptExecutionTime.2) pelaksanaanDatabasequerycachingingPdotominimizedataBaseHits.3)

Suntikan Ketergantungan PHP: Meningkatkan kebolehlaksanaan kodSuntikan Ketergantungan PHP: Meningkatkan kebolehlaksanaan kodMay 12, 2025 am 12:03 AM

Suntikan ketergantungan (DI) dengan ketara meningkatkan kesesuaian kod PHP oleh kebergantungan transitif secara eksplisit. 1) Kelas Decoupling dan pelaksanaan khusus menjadikan ujian dan penyelenggaraan lebih fleksibel. 2) Di antara tiga jenis, pembina menyuntik kebergantungan ekspresi eksplisit untuk memastikan keadaan konsisten. 3) Gunakan bekas DI untuk menguruskan kebergantungan kompleks untuk meningkatkan kualiti kod dan kecekapan pembangunan.

Pengoptimuman Prestasi PHP: Pengoptimuman Pertanyaan Pangkalan DataPengoptimuman Prestasi PHP: Pengoptimuman Pertanyaan Pangkalan DataMay 12, 2025 am 12:02 AM

DatabaseQueryoptimizationInpinvolvesseverSlegatiesToenhancePratePratePratePratePratePregiesToRperformance.1) selectOnlynessaryColumnStoReducedatatatransfer.2) UseIndexingTospeedupdatareTrieval.3) PrevancequerycachingToStoreresultSoffReFfeFfffffffffffffffffffffffffffffffffffffffffffferseprewfffffffffffersepresseprespersepresperseprespersepresperseprespersepresperseprespers

Panduan Mudah: Menghantar E -mel dengan Skrip PHPPanduan Mudah: Menghantar E -mel dengan Skrip PHPMay 12, 2025 am 12:02 AM

Phpisusedforsendingemailsduetoitsbuilt-inmail () functionAndSupportivelibrariesLikePhpmailerandswiftmailer.1) usethemail () functionforbasiceMails, butithaslimitations.2) scorkphpmailerforadvancedfeatures

Prestasi PHP: Mengenalpasti dan menetapkan kesesakanPrestasi PHP: Mengenalpasti dan menetapkan kesesakanMay 11, 2025 am 12:13 AM

Kesesakan prestasi PHP boleh diselesaikan melalui langkah -langkah berikut: 1) Gunakan XDEBUG atau Blackfire untuk analisis prestasi untuk mengetahui masalah; 2) Mengoptimumkan pertanyaan pangkalan data dan menggunakan cache, seperti APCU; 3) Gunakan fungsi yang cekap seperti array_filter untuk mengoptimumkan operasi array; 4) Konfigurasi Opcache untuk cache bytecode; 5) mengoptimumkan bahagian depan, seperti mengurangkan permintaan HTTP dan mengoptimumkan gambar; 6) Memantau dan mengoptimumkan prestasi secara berterusan. Melalui kaedah ini, prestasi aplikasi PHP dapat ditingkatkan dengan ketara.

Suntikan Ketergantungan untuk PHP: Ringkasan CepatSuntikan Ketergantungan untuk PHP: Ringkasan CepatMay 11, 2025 am 12:09 AM

DependencyInjection (DI) inphpisadesignPatternThatManagesandReducesclassdependencies, enhancingcodemodularity, testility, andmaintainability.itallowspassingdependenciesLikedatabaseconnectionstoclassesesparameters, fasilitasieAseAsiShanandscalability.

Meningkatkan Prestasi PHP: Strategi & Teknik CachingMeningkatkan Prestasi PHP: Strategi & Teknik CachingMay 11, 2025 am 12:08 AM

CachingimprovesphpperformanceSbebyStoringResultsofcomputationsorqueriesforquickretrieval, reducingserverloadandenhancingResponsetimes.effectiveStRegiesClude: 1) Opcodecaching, yang

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Nordhold: Sistem Fusion, dijelaskan
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini