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中文网其他相关文章!