Nested Integer
- http://blog.csdn.net/craiglin1992/article/details/44760121
- https://github.com/garudareiga/algo-java/blob/master/src/main/java/list/NestedListOfIntegers.java
public class NestedListOfIntegers {
int sum(List<Object> nestedlist) {
return sum(nestedlist, 1);
}
@SuppressWarnings("unchecked")
int sum(List<Object> nestedlist, int level) {
int sum = 0;
for (Object o : nestedlist) {
if (o instanceof Integer)
sum += (Integer) o * level;
else if (o instanceof List)
sum += sum((List<Object>) o, level + 1);
}
return sum;
}
}
Follow up:
Reversed Nested Integer
int calWeightedSum(MyNestedInteger ni) {
if(ni == null) {
return 0;
}
else {
if(ni.isInteger()) {
return ni.getInteger()
} else {
int depth = ni.getDepth(ni.getList());
getListSum(ni.getList(), depth);
}
}
}
int getListSum(List<MyNestedInteger> li, int curDepth) {
int ret = 0;
for(MyNestedInteger ni : li) {
if(ni.isInteger()) {
ret += ni.getInteger() * curDepth;
} else {
ret += getListSum(ni.getList(), curDepth-1);
}
}
return ret;
}
int getDepth(List<MyNestedInteger> li) {
int greatestDepth = 0;
for(MyNestedInteger ni : li) {
if(ni.isInteger()) {
if(greatestDepth < 1) {
greatestDepth = 1;
}
} else {
int d = getDepth(li.getList());
if(greatestDepth < d){
greatestDepth = d;
}
}
}
return greatestDepth;
}