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
| int maxDepth=1; public int depthSumInverse(List<NestedInteger> nestedList) { for(NestedInteger i : nestedList){ maxDepth=Math.max(maxDepth,getMax(i)); } return dfs(nestedList,maxDepth); }
int dfs(List<NestedInteger> nestedList, int depth){ int res=0; for(NestedInteger i : nestedList){ if(i.isInteger()){ res+=i.getInteger()*depth; }else{ res+=dfs(i.getList(),depth-1); } } return res; }
int getMax(NestedInteger i){ if(i.isInteger()){ return 1; } int depth=1; for(NestedInteger next : i.getList()){ depth=Math.max(depth,getMax(next)+1); } return depth; }
|