मान लीजिए हमारे पास कर्मचारी जानकारी की एक डेटा संरचना है, जिसमें कर्मचारी की विशिष्ट आईडी, उसका महत्व मूल्य और उसके प्रत्यक्ष अधीनस्थों की आईडी हैं। उदाहरण के लिए, कर्मचारी 1 कर्मचारी 2 का नेता है, और कर्मचारी 2 कर्मचारी 3 का नेता है। मान लीजिए उनके महत्व मूल्य क्रमशः 15, 10 और 5 हैं। तब कर्मचारी 1 की डेटा संरचना [1, 15, [2]] होगी, कर्मचारी 2 की [2, 10, [3]], और कर्मचारी 3 की [3, 5, []]।
इसलिए, यदि हमारे पास एक कंपनी की कर्मचारी जानकारी और एक कर्मचारी आईडी है, तो हमें इस कर्मचारी और उसके सभी अधीनस्थों का कुल महत्व मूल्य ज्ञात करना है।
उदाहरण के लिए, यदि इनपुट [[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