मान लीजिए कि हमारे पास कर्मचारी जानकारी की डेटा संरचना है, कर्मचारी की विशिष्ट आईडी, उसका महत्व मूल्य और उसके प्रत्यक्ष अधीनस्थों की आईडी है। उदाहरण के तौर पर, कर्मचारी 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 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- वजन:=एक नया नक्शा, नेता:=एक नया नक्शा
- कर्मचारियों में प्रत्येक ई के लिए, करें
- वजन[e[0]] :=e[1]
- नेता[e[0]] :=e[2]
- res :=0
- res :=res + weight[id]
- कतार:=नेता[आईडी]
- जबकि कतार शून्य नहीं है, करें
- new_queue :=एक नई सूची
- नोड:=कतार से अंतिम तत्व हटाएं
- res :=res + weight[node]
- यदि नेता [नोड] शून्य नहीं है, तो
- new_queue :=new_queue + लीडर [नेता का आकार]
- कतार:=कतार + new_queue
- रिटर्न रेस
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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