Python中的嵌套列表权重总和II
给定一个嵌套的整数列表,返回列表中所有整数的总和,并按其深度加权。每个元素可以是整数,也可以是列表-其元素也可以是整数或其他列表。与之前的问题从根到叶的权重增加的问题不同,现在从下至上定义了权重。也就是说,叶级整数的权重为1,而根级整数的权重最大。
因此,如果输入类似于[[1,1],2,[1,1]],则输出将为8,深度1为四个1,深度2为2。
为了解决这个问题,我们将遵循以下步骤-
定义一个功能
depthSumInverse()
。这将需要nestedList单位:=新列表
最大值:= 0
定义一个功能
flatten()
。这将需要nlst,dist距离:=距离+ 1
maxd:= maxd,dist的最大值
对于nlst中的每个节点,执行
展平(节点,距离)
在单位末尾插入(node,dist)
如果节点是一个非零的整数,则
除此以外,
展平(nestedList,0)
总和:= 0
对于单位中的每个v,d
summ:= summ + v *(maxd + 1-d)
返回汇总
例
让我们看下面的实现以更好地理解-
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
以上是 Python中的嵌套列表权重总和II 的全部内容, 来源链接: utcz.com/z/326439.html