2127。最大的员工被邀请参加会议
>难度: hard
主题:深度优先搜索,图形,拓扑排序
>一家公司正在组织会议,并有n名员工名单,等待被邀请。他们已经安排了一张大圆桌会议,能够座位员工的任何数字。
员工的编号为0到n -1。每个员工都有一个> 的人,只有当他们才能坐在他们最喜欢的人旁边的情况下,他们才会参加会议>桌子。员工的最喜欢的人是>不是他们自己。> 给定a
0-索引整数阵列,其中最喜欢的[i]表示ith> th 员工的最喜欢的人,返回>可以邀请参加会议的员工。
>>示例1:
>输入:
fairm = [2,2,1,2]
> >输出:
3> n == fale.length
>从给定的数组的喜爱中,创建一个图形,对于每个索引i,都有一个从喜欢的[i]到i的指向边缘。该图将是循环和无环边缘链的组合。现在,我们可以选择员工坐在桌子上的方式?>
>我们可以选择员工的第一种方法是选择图表的周期。可以证明,在这种情况下,不在周期中的员工永远无法坐在桌子上(除非周期的长度为2)。
>让我们在PHP中实现此解决方案:
解释:
图表表示
<?php /** * @param Integer[] $favorite * @return Integer */ function maximumInvitations($favorite) { ... ... ... /** * go to ./solution.php */ } // Example usage: $favorites1 = [2, 2, 1, 2]; $favorites2 = [1, 2, 0]; $favorites3 = [3, 0, 1, 4, 1]; echo maximumInvitations($favorites1) . "\n"; // Output: 3 echo maximumInvitations($favorites2) . "\n"; // Output: 3 echo maximumInvitations($favorites3) . "\n"; // Output: 4 ?>
>链条的拓扑排序
循环检测:
> ,使其适用于最高>
10 5 如果您发现此系列有帮助,请考虑在Github上给出 >
以上是受邀参加会议的最大员工数的详细内容。更多信息请关注PHP中文网其他相关文章!