339. 嵌套列表权重和

题目

给定一个嵌套的整数列表,请返回该列表按深度加权后所有整数的总和。

每个元素要么是整数,要么是列表。同时,列表中元素同样也可以是整数或者是另一个列表。

示例 1:

1
2
3
输入: [[1,1],2,[1,1]]
输出: 10
解释: 因为列表中有四个深度为 2 的 1 ,和一个深度为 1 的 2。

示例2:

1
2
3
输入: [1,[4,[6]]]
输出: 27
解释: 一个深度为 11,一个深度为 24,一个深度为 36。所以,1 + 4*2 + 6*3 = 27

解法

解法一:

递归

JAVA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public int depthSum(List<NestedInteger> nestedList) {
return depthSum(nestedList, 1);
}

private int depthSum(List<NestedInteger> nestedList, int depth) {
int sum = 0;
for (NestedInteger ni : nestedList) {
if (ni.isInteger()) {
sum += ni.getInteger() * depth;
} else {
sum += depthSum(ni.getList(), depth + 1);
}
}
return sum;
}
0%