假设您是派对顾问,并受雇准备和举办公司派对。公司中的每个员工都是 B 树式层次结构的一部分,并被赋予了党级价值。为了防止员工在直接主管在场的情况下受到抑制,主管及其直接员工都不会被邀请。但是,可以邀请任一组。
设计一种算法来生成最大派对等级和的客人列表。
我的解决方案是
- 主管将包含一个字段,用于直接员工的党职总和
执行自下而上的广度优先搜索以访问树中最低的主管子树。对于每个主管,计算主管党级别与直接雇员总和之间的差异。如果员工党排名总和大于主管排名,所有受影响的员工将被添加到客人列表中。
如果主管和员工排名之间的差异小于或等于零,则向上移动一级并针对下一级子树执行上述比较。
逐级往上,直到分析出公司负责人,并打印出党员总和和宾客名单。
我对运行时间的分析是O(n log n -1)
由于
log n-1
- 下降到最低子树的时间
n
- 最大比较次数
我在一次采访中想到了这个,但不禁觉得我错过了一些东西。我的分析和步骤正确吗?