802。查找最终的安全状态
难度:中等
>主题:深度优先搜索,广度优先搜索,图形,拓扑排序
有一个定向的n个节点图,每个节点从0到n -1标记。该图由a 0- indexed
终端节点。节点是a安全节点如果从该节点开始的每个可能的路径都会导致>终端节点(或另一个安全节点)。
返回一个包含图形的所有安全节点的数组。答案应以上升顺序排序。
>>示例1:
>输入:
graph = [[1,2],[2,3],[5],[0],[5],[5],[],[],[]]graph = [[1,2,3,4],[1,2],[3,4],[0,4],[0,4],[]] >输出:
[4]1:该节点当前正在访问(即,在递归堆栈中)。
>
dfs函数
<?php /** * @param Integer[][] $graph * @return Integer[] */ function eventualSafeNodes($graph) { ... ... ... /** * go to ./solution.php */ } /** * DFS helper function * * @param $node * @param $graph * @param $visited * @return int|mixed */ function dfs($node, $graph, &$visited) { ... ... ... /** * go to ./solution.php */ } // Example usage: $graph1 = [[1,2],[2,3],[5],[0],[5],[],[]]; $graph2 = [[1,2,3,4],[1,2],[3,4],[0,4],[]]; print_r(eventualSafeNodes($graph1)) . "\n"; // Output: [2,4,5,6] print_r(eventualSafeNodes($graph2)) . "\n"; // Output: [4] ?>
示例演练: 示例1:
$graph = [[1,2],[2,3],[5],[0],[5],[],[]]; print_r(eventualSafeNodes($graph));
该解决方案使用 DFS 有效地确定安全节点,确保满足问题约束。 联系链接 如果您发现本系列有帮助,请考虑在 GitHub 上给 存储库 一个星号或在您最喜欢的社交网络上分享该帖子?。您的支持对我来说意义重大! 如果您想要更多类似的有用内容,请随时关注我:<?php /**
* @param Integer[][] $graph
* @return Integer[]
*/
function eventualSafeNodes($graph) {
...
...
...
/**
* go to ./solution.php
*/
}
/**
* DFS helper function
*
* @param $node
* @param $graph
* @param $visited
* @return int|mixed
*/
function dfs($node, $graph, &$visited) {
...
...
...
/**
* go to ./solution.php
*/
}
// Example usage:
$graph1 = [[1,2],[2,3],[5],[0],[5],[],[]];
$graph2 = [[1,2,3,4],[1,2],[3,4],[0,4],[]];
print_r(eventualSafeNodes($graph1)) . "\n"; // Output: [2,4,5,6]
print_r(eventualSafeNodes($graph2)) . "\n"; // Output: [4]
?>
时间和空间复杂度:
以上是。找到最终的安全状态的详细内容。更多信息请关注PHP中文网其他相关文章!