forked from DengWangBao/Leetcode-Java
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNestedListWeightSumII.java
65 lines (52 loc) · 1.68 KB
/
NestedListWeightSumII.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import java.util.List;
/**
* https://leetcode.com/articles/nested-list-weight-sum/
*/
public class NestedListWeightSumII {
public int depthSumInverse(List<NestedInteger> nestedList) {
int depth = calcDepth(nestedList);
return depthSumInverse(nestedList, depth);
}
public int calcDepth(List<NestedInteger> nestedList) {
int max = 0;
for (NestedInteger nest : nestedList) {
if (!nest.isInteger()) {
int depth = calcDepth(nest.getList());
max = Math.max(depth + 1, max);
} else {
max = Math.max(max, 1);
}
}
return max;
}
private int depthSumInverse(List<NestedInteger> nestedList, int depth) {
int sum = 0;
for (NestedInteger nest : nestedList) {
if (nest.isInteger()) {
sum += depth * nest.getInteger();
} else {
sum += depthSumInverse(nest.getList(), depth - 1);
}
}
return sum;
}
/**
public int depthSumInverse(List<NestedInteger> nestedList) {
return helper(nestedList, 0);
}
private int helper(List<NestedInteger> niList, int prev) {
int intSum = prev;
List<NestedInteger> levelBreak = new ArrayList<>();
for (NestedInteger ni : niList) {
if (ni.isInteger()) {
intSum += ni.getInteger();
} else {
levelBreak.addAll(ni.getList());
}
}
// 要判断levelBreak为空,否则会死循环
int listSum = levelBreak.isEmpty() ? 0 : helper(levelBreak, intSum);
return listSum + intSum;
}
*/
}