首页 > 代码库 > 339. Nested List Weight Sum
339. Nested List Weight Sum
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:
Given the list [[1,1],2,[1,1]]
, return 10. (four 1‘s at depth 2, one 2 at depth 1)
Example 2:
Given the list [1,[4,[6]]]
, return 27. (one 1 at depth 1, one 4 at depth 2, and one 6 at depth 3; 1 + 4*2 + 6*3 = 27)
思路:dfs。对dfs的理解越来越好了,也慢慢理解和backtracking的实质区别。dfs重在搜索,搜索全图。
这道题dfs,如果不是integer,就dfs这个分支。把和累加起来然后返回。
/** * // 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(); * } */public class Solution { public int depthSum(List<NestedInteger> nestedList) { if(nestedList==null||nestedList.size()==0) { return 0; } return dfs(nestedList,1); } public int dfs(List<NestedInteger> list,int level) { int res=0; for(NestedInteger i:list) { if(i.isInteger()) { res+=i.getInteger()*level; } else { res+=dfs(i.getList(),level+1); } } return res; } }
339. Nested List Weight Sum
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。