2924。尋找冠軍 II
難度:中
主題:圖表
一場比賽中有n支球隊,編號從0到n-1;每個團隊也是DAG中的一個節點。
給定整數n 和一個0 索引 長度為m 的二維整數數組邊,表示DAG,其中>dges[i] = [u i, vi]表示有來自團隊的有向邊ui 到圖表中的 vi 團隊。
圖中從a到b的有向邊意味著a隊強比b隊弱比a隊
如果沒有b隊比a隊更強,A隊將成為錦標賽的冠軍
。如果有唯一冠軍,則返回將成為錦標賽冠軍的隊伍,否則返回-1
。筆記
範例1:
範例2:
約束:
提示:
解:
我們需要在給定的有向無環圖 (DAG) 中辨識 入度 為 0 的團隊。沒有傳入優勢的球隊代表沒有其他球隊比他們更強大的球隊,這使得他們成為冠軍的候選人。如果剛好有一支球隊的入度為0,那麼它就是唯一的冠軍。如果有多個或沒有這樣的團隊,結果為-1。
讓我們用 PHP 實作這個解:2924。尋找冠軍 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 ?>
輸入解析:
初始化入度:
計算入度:
尋找候選人:
決出冠軍:
時間複雜度:
空間複雜度:
這個解決方案非常高效,並且在給定的約束條件下工作。
聯絡連結
如果您發現本系列有幫助,請考慮在 GitHub 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!
如果您想要更多類似的有用內容,請隨時關注我:
以上是尋找冠軍 II的詳細內容。更多資訊請關注PHP中文網其他相關文章!