力扣日記 690 員工的重要性 遞迴 迭代

2021-10-04 01:21:10 字數 2187 閱讀 3765

給定乙個儲存員工資訊的資料結構,它包含了員工唯一的id,重要度 和 直系下屬的id。

比如,員工1是員工2的領導,員工2是員工3的領導。他們相應的重要度為15, 10, 5。那麼員工1的資料結構是[1, 15, [2]],員工2的資料結構是[2, 10, [3]],員工3的資料結構是[3, 5, ]。注意雖然員工3也是員工1的乙個下屬,但是由於並不是直系下屬,因此沒有體現在員工1的資料結構中。

現在輸入乙個公司的所有員工資訊,以及單個員工id,返回這個員工和他所有下屬的重要度之和。

class

employee

:def

__init__

(self,id:

int, importance:

int, subordinates: list[

int]):

# it's the unique id of each node.

# unique id of this employee

self.id=

id# the importance value of this employee

self.importance = importance

# the id of direct subordinates

self.subordinates = subordinates

# id,importance是int,subordinates是list,元素是id

class

solution

:def

getimportance

(self, employees: list[

'employee'],

id:int)

->

int:

# print(employees)

deffind(id

):for i in employees:

if i.

id==id:

employees.remove(i)

return i

n=0 ls=[id

]while ls:

for _ in

range

(len

(ls)):

id=ls.pop(0)

person=find(id)

n+=person.importance

ls.extend(person.subordinates)

return n

執行用時 :204 ms, 在所有 python3 提交中擊敗了41.49%的使用者

class

solution

:def

getimportance

(self, employees: list[

'employee'],

id:int)

->

int:

d=n=

0 ls=[id

]while ls:

for _ in

range

(len

(ls)):

id=ls.pop(0)

person=d[id]

n+=person.importance

ls.extend(person.subordinates)

return n

class

solution

:def

getimportance

(self, employees: list[

'employee'],

id:int)

->

int:

d=defdfs

(eid)

: employee = d[eid]

return

(employee.importance +

sum(dfs(eid)

for eid in employee.subordinates)

)return dfs(

id)

執行用時 :180 ms, 在所有 python3 提交中擊敗了52.84%的使用者

690 員工的重要性

給定乙個儲存員工資訊的資料結構,它包含了員工唯一的id,重要度 和 直系下屬的id。比如,員工1是員工2的領導,員工2是員工3的領導。他們相應的重要度為15,10,5。那麼員工1的資料結構是 1,15,2 員工2的資料結構是 2,10,3 員工3的資料結構是 3,5,注意雖然員工3也是員工1的乙個下...

690 員工的重要性

給定乙個儲存員工資訊的資料結構,它包含了員工唯一的id,重要度和直系下屬的id。比如,員工1是員工2的領導,員工2是員工3的領導。他們相應的重要度為15,10,5。那麼員工1的資料結構是 1,15,2 員工2的資料結構是 2,10,3 員工3的資料結構是 3,5,注意雖然員工3也是員工1的乙個下屬,...

690 員工的重要性

給定乙個儲存員工資訊的資料結構,它包含了員工唯一的id,重要度 和 直系下屬的id。比如,員工1是員工2的領導,員工2是員工3的領導。他們相應的重要度為15,10,5。那麼員工1的資料結構是 1,15,2 員工2的資料結構是 2,10,3 員工3的資料結構是 3,5,注意雖然員工3也是員工1的乙個下...