Python 中的员工重要性
假设我们有一个员工信息的数据结构,其中包含员工的唯一 ID、其重要性值以及其直接下属的 ID。例如,员工 1 是员工 2 的领导,员工 2 是员工 3 的领导。假设他们的重要性值分别为 15、10 和 5。那么员工 1 的数据结构类似于 [1, 15, [2]],员工 2 的数据结构类似于 [2, 10, [3]],员工 3 的数据结构类似于 [3, 5, []]。
因此,如果我们拥有公司员工的信息以及一个员工 ID,我们必须找到该员工及其所有下属的总重要性值。
因此,如果输入类似于 [[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1,则输出将为 11,因为 Emp1 的重要性值为 5,并且 Emp1 有两个直接下属,它们是 Emp2 和 Emp3。现在两者都具有重要性值 3。因此,Emp1 的总重要性值为 5 + 3 + 3 = 11。
为了解决这个问题,我们将遵循以下步骤:
- weight := 一个新的映射,leader := 一个新的映射
- 对于 employees 中的每个 e,执行
- weight[e[0]] := e[1]
- leader[e[0]] := e[2]
- res := 0
- res := res + weight[id]
- queue := leader[id]
- 当 queue 不为零时,执行
- new_queue := 一个新的列表
- node := 从 queue 中删除最后一个元素
- res := res + weight[node]
- 如果 leader[node] 不为零,则
- new_queue := new_queue + leader[leader 的大小]
- queue := queue + new_queue
- 返回 res
让我们看看以下实现以获得更好的理解:
示例
class Solution(object):
def getImportance(self, employees, id):
weight = {}
leader = {}
for e in employees:
weight[e[0]] = e[1]
leader[e[0]] = e[2]
res = 0
res += weight[id]
queue = leader[id]
while queue:
new_queue = []
node = queue.pop()
res += weight[node]
if leader[node]:
new_queue += leader[node]
queue += new_queue
return res
ob = Solution()
print(ob.getImportance([[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1))输入
[[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1
输出
11
广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP