पूर्णांकों की एक नेस्टेड सूची को देखते हुए, उनकी गहराई से भारित सूची में सभी पूर्णांकों का योग लौटाएं। प्रत्येक तत्व या तो एक पूर्णांक या एक सूची है -- जिसके तत्व पूर्णांक या अन्य सूचियाँ भी हो सकते हैं। पिछले प्रश्न से भिन्न जहां वजन जड़ से पत्ती तक बढ़ रहा है, अब वजन नीचे से ऊपर की ओर परिभाषित किया गया है। यानी, पत्ती स्तर के पूर्णांकों का भार 1 होता है, और मूल स्तर के पूर्णांकों का भार सबसे अधिक होता है।
इसलिए, अगर इनपुट [[1,1],2,[1,1]] जैसा है, तो आउटपुट 8 होगा, चार 1 की गहराई 1, एक 2 गहराई 2 पर।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एक फ़ंक्शन को परिभाषित करें गहराईSumInverse() । यह नेस्टेडलिस्ट लेगा
-
फ्लैट्स:=एक नई सूची
-
अधिकतम:=0
-
फ़्लैटन () फ़ंक्शन को परिभाषित करें। इसमें nlst,dist
. लगेगा -
जिला :=जिला + 1
-
अधिकतम:=अधिकतम अधिकतम, जिला
-
nlst में प्रत्येक नोड के लिए, करें
-
यदि नोड एक पूर्णांक गैर-शून्य है, तो
-
फ्लैटों के अंत में (नोड, जिला) डालें
-
-
अन्यथा,
-
समतल (नोड, जिला)
-
-
-
फ़्लैटन (नेस्टेडलिस्ट, 0)
-
योग:=0
-
प्रत्येक वी, डी के लिए फ्लैटों में, करें
-
योग :=योग + वी*(अधिकतम+1-डी)
-
-
वापसी राशि
उदाहरण
आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -
class Solution(object): def depthSumInverse(self, nestedList): flats=[] self.maxd=0 def flatten(nlst,dist): if isinstance(nlst,list): nlst=nlst dist+=1 self.maxd=max(self.maxd,dist) for node in nlst: if isinstance(node,int): flats.append((node,dist)) else: flatten(node,dist) flatten(nestedList,0) summ=0 for v,d in flats: summ+=v*(self.maxd+1-d) return summ ob = Solution() print(ob.depthSumInverse([[1,1],2,[1,1]]))
इनपुट
[[1,1],2,[1,1]]
आउटपुट
8