Problem
Given a nested list of integers, return the sum of all integers in the list weighted by their depth.
Each element is either an integer, or a list -- whose elements may also be integers or other lists.
Example 1:
Input: [[1,1],2,[1,1]]
Output: 10
Explanation: Four 1's at depth 2, one 2 at depth 1.
Example 2:
Input: [1,[4,[6]]]
Output: 27
Explanation: One 1 at depth 1, one 4 at depth 2, and one 6 at depth 3; 1 + 42 + 63 = 27.
Solution
/**
* // @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
* public Integer getInteger();
* // @return the nested list that this NestedInteger holds, if it holds a nested list
* public List<NestedInteger> getList();
*/
class Solution {
public int depthSum(List<NestedInteger> nestedList) {
return helper(nestedList, 1);
}
private int helper(List<NestedInteger> list, int level) {
int res = 0;
for (NestedInteger item: list) {
if (item.isInteger()) res += (level*item.getInteger());
else {
res += helper(item.getList(), level+1);
}
}
return res;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。