Python 中的嵌套列表权重和 II
pythonserver side programmingprogramming
给定一个嵌套的整数列表,返回列表中所有整数按其深度加权的和。每个元素要么是整数,要么是列表——其元素也可能是整数或其他列表。与上一个权重从根到叶增加的问题不同,现在权重是从下往上定义的。即,叶级整数的权重为 1,根级整数的权重最大。
因此,如果输入为 [[1,1],2,[1,1]],则输出将为 8,因为深度 1 处有四个 1,深度 2 处有一个 2。
为了解决这个问题,我们将遵循以下步骤 −
定义一个函数depthSumInverse()。这将采用 nestedList
flats:= 一个新列表
maxd:= 0
定义一个函数 flatten() 。这将需要 nlst,dist
dist := dist + 1
maxd:= maxd, dist 的最大值
对于 nlst 中的每个节点,执行
如果节点是非零的整数,则
在 flats 的末尾插入 (node,dist)
否则,
flatten(node, dist)
flatten(nestedList, 0)
summ:= 0
对于每个v,d 以平面形式表示,do
summ := summ + v*(maxd+1-d)
返回 summ
示例
让我们看下面的实现,以便更好地理解 −
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 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

