2097。有效的配對排列
難度:難
主題:深度優先搜尋、圖、歐拉電路
給定一個0索引 2D整數數組對,其中pairs[i] = [starti, endi]。如果對於每個索引 i,其中 1 ,則對的排列是有效。 pairs.length,我們有 endi-1 == starti
.回傳任何對的有效排列
。注意
:將產生輸入,以便存在有效的配對排列。範例1:
範例2:
範例 3:
約束:
提示:
解:
我們可以將其視為圖論中的歐拉路徑問題。在這種情況下,這些對可以被視為邊,而這些對內的值(開始和結束)可以被視為節點。我們需要找到一條歐拉路徑,該路徑每一條邊都只使用一次,並且一條邊的終點必須與下一條邊的起點相符。
讓我們用 PHP 實作這個解:2097。有效的配對排列
<?php /** * @param Integer[][] $pairs * @return Integer[][] */ function validArrangement($pairs) { ... ... ... /** * go to ./solution.php */ } // Example usage: $pairs1 = [[5, 1], [4, 5], [11, 9], [9, 4]]; $pairs2 = [[1, 3], [3, 2], [2, 1]]; $pairs3 = [[1, 2], [1, 3], [2, 1]]; print_r(validArrangement($pairs1)); // Output: [[11, 9], [9, 4], [4, 5], [5, 1]] print_r(validArrangement($pairs2)); // Output: [[1, 3], [3, 2], [2, 1]] print_r(validArrangement($pairs3)); // Output: [[1, 2], [2, 1], [1, 3]] ?>
圖建構:
找起始節點:
Hierholzer 演算法:
回傳結果:
<?php /** * @param Integer[][] $pairs * @return Integer[][] */ function validArrangement($pairs) { ... ... ... /** * go to ./solution.php */ } // Example usage: $pairs1 = [[5, 1], [4, 5], [11, 9], [9, 4]]; $pairs2 = [[1, 3], [3, 2], [2, 1]]; $pairs3 = [[1, 2], [1, 3], [2, 1]]; print_r(validArrangement($pairs1)); // Output: [[11, 9], [9, 4], [4, 5], [5, 1]] print_r(validArrangement($pairs2)); // Output: [[1, 3], [3, 2], [2, 1]] print_r(validArrangement($pairs3)); // Output: [[1, 2], [2, 1], [1, 3]] ?>
這種方法透過將問題視為有向圖中的歐拉路徑問題,有效地找到對的有效排列。
聯絡連結
如果您發現本系列有幫助,請考慮在 GitHub 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!
如果您想要更多類似的有用內容,請隨時關注我:
以上是配對的有效排列的詳細內容。更多資訊請關注PHP中文網其他相關文章!