【LeetCode】传递信息 Java 题解
题目描述
小朋友 A 在和 ta 的小伙伴们玩传信息游戏,游戏规则如下:
有 n 名玩家,所有玩家编号分别为 0 ~ n-1,其中小朋友 A 的编号为 0 每个玩家都有固定的若干个可传信息的其他玩家(也可能没有)。传信息的关系是单向的(比如 A 可以向 B 传信息,但 B 不能向 A 传信息)。每轮信息必须需要传递给另一个人,且信息可重复经过同一个人给定总玩家数 n,以及按 [玩家编号,对应可传递玩家编号] 关系组成的二维数组 relation。返回信息从小 A (编号 0 ) 经过 k 轮传递到编号为 n-1 的小伙伴处的方案数;若不能到达,返回 0。
复制代码
思路分析
这个题目提干比较长,需要认真理解,提取核心信息。提取的关键点如下:求从位置 0 到 位置 n - 1 需要 k 步骤的方案数。
理解清楚题目之后,可以用 dfs 的思想来求解。题目与位置有关,需要记录当前节点的位置和下一个节点的位置。
代码
复制代码
总结
上述算法的时间复杂度是 O( n ^ k ), 空间复杂度是 O (m + n + k)
坚持每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/164696e9a4485629fb1ba29ae】。文章转载请联系作者。
评论