LeetCode刷题实战339:嵌套列表权重和
共 2147字,需浏览 5分钟
·
2021-08-05 01:38
Given a nested list of integers, return the sum of all integers in the list weighted by their depth.
Each element is either an integer, or a list -- whose elements may also be integers or other lists.
示例
示例 1:
输入: [[1,1],2,[1,1]]
输出: 10
解释: 因为列表中有四个深度为 2 的 1 ,和一个深度为 1 的 2。
示例 2:
输入: [1,[4,[6]]]
输出: 27
解释: 一个深度为 1 的 1,一个深度为 2 的 4,一个深度为 3 的 6。所以,1 + 4*2 + 6*3 = 27。
解题
大问题可以拆成很多个类型相同的小问题,
所以观察到可以用递归解,所以用weight这个变量记录当前的深度(也就是权重),
当类型是数字的时候,直接返回weight和数字的乘积,
当类型是nestedList的时候,就需要对其中每一个元素进行递归处理。
class Solution(object):
def depthSum(self, nestedList):
"""
:type nestedList: List[NestedInteger]
:rtype: int
"""
def Sum(weight, l):
if l.isInteger():
return weight * l.getInteger()
return sum(Sum(weight + 1, item) for item in l.getList())
return sum(Sum(1, i) for i in nestedList)