Python 中的嵌套列表权重和 II
给定一个整数的嵌套列表,返回列表中所有整数的和,其权重由其深度加权。每个元素要么是一个整数,要么是一个列表——其元素也可能是整数或其他列表。与权重从根到叶不断增加的前一个问题不同,现在的权重是从下向上定义的。即叶级整数的权重为 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
对于 flats 中的每个 v,d,执行
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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C #
MongoDB
MySQL
Javascript
PHP