题目要求在一系列补丁版本的迭代关系中,找出迭代(依赖链)次数最多的补丁版本。由于每个版本的前序版本(也就是“依赖它并发布新补丁”的版本)最多只有一个,这就意味着这些版本之间形成了多棵 树结构,每棵树的根节点即没有前序版本(输入中标记为 "NA" 的节点)。
本质问题:
对每棵树,从根节点出发,找出深度最大的叶子节点(即依赖链最长的版本)。如果有多个叶子节点的深度都相同,则按字典序输出所有这些版本。
某测试工具在升级时,会从所有补丁版本中选择迭代次数最大的一个作为最终升级对象。补丁版本之间存在前序关系:若一个补丁版本是在另一个补丁版本的基础上修改并发布,则后者称为前者的前序版本。已知条件保证每个补丁版本至多有一个前序版本,且这些依赖关系不会形成环。版本号只包含大写字母和数字。
设一个补丁版本如果没有前序版本,则其迭代次数为 0;否则,其迭代次数等于它的前序版本的迭代次数再加 1。现在需要根据给定的版本迭代关系,找出所有迭代次数最大的补丁版本号,并按字典序升序输出。
约束条件:
N 在 1 到 100000 之间。1 到 100 之间。开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册