/** * // This is the interface that allows for creating nested lists. * // You should not implement it, or speculate about its implementation * public 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(); * } */ publicclassSolution{ publicintdepthSum(List<NestedInteger> nestedList){ return process(nestedList, 1);
}
privateintprocess(List<NestedInteger> list, int depth){ if (list == null || list.isEmpty()) { return0; }
int sum = 0; for (NestedInteger ni : list) { if (ni.isInteger()) { sum += depth * ni.getInteger(); } else { sum += process(ni.getList(), depth + 1); } }