题目本身解释的不好
建议看注释
和I是一样的
只不过多了个计算最大深度的环节
class Solution {
int depth = 1;
int sum = 0;
int maxDepth = 0;
public int depthSumInverse(List<NestedInteger> nestedList) {
//和上一题是一样的
//先要计算它的深度,剩下一样的
//整数的深度是位于多少个列表内部
//比如例2,6就是层层嵌套了3次,所以6的深度就是3
//那么最大深度是3,所以3-3+1=1
//即6的权重是1
//那么加权和就是数字本身×加权值=6×1=6
//题目本身没解释清
maxDepthFun(nestedList);
System.out.print(maxDepth);
depth = 1;
traverse(nestedList);
return sum;
}
void traverse(List<NestedInteger> nestedList) {
for (NestedInteger n : nestedList) {
if (n.isInteger()) {
sum += (maxDepth - depth + 1) * n.getInteger();
continue;
}
// 遍历子树
depth++;
traverse(n.getList());
depth--;
}
}
//计算最大深度
void maxDepthFun(List<NestedInteger> nestedList){
maxDepth = Math.max(maxDepth, depth);
for (NestedInteger n : nestedList) {
if (n.isInteger()){
continue;
}
//如果depth放到for循环外加一减一
//不对
//因为只有是列表情况下才给加1
depth++;
maxDepthFun(n.getList());
depth--;
}
}
}