-
Notifications
You must be signed in to change notification settings - Fork 2
/
NestedListWeightSum.java
41 lines (36 loc) · 1.3 KB
/
NestedListWeightSum.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
package src.java.easy.list;
import java.util.List;
// This is the interface that allows for creating nested lists.
// You should not implement it, or speculate about its implementation
interface NestedInteger {
// @return true if this NestedInteger holds a single integer,
// rather than a nested list.
public boolean isInteger();
// @return the single integer that this NestedInteger holds,
// if it holds a single integer
// Return null if this NestedInteger holds a nested list
public Integer getInteger();
// @return the nested list that this NestedInteger holds,
// if it holds a nested list
// Return null if this NestedInteger holds a single integer
public List<NestedInteger> getList();
}
public class NestedListWeightSum {
public int depthSum(List<NestedInteger> nestedList) {
// Write your code here
int sum = 0;
for (NestedInteger n : nestedList)
sum += dfs(n, 1);
return sum;
}
private int dfs(NestedInteger n, int level) {
int sum = 0;
if (n.isInteger())
sum += level * n.getInteger();
if (n.getList() == null || n.getList().isEmpty())
return sum;
for (NestedInteger ni : n.getList())
sum += dfs(ni, level + 1);
return sum;
}
}