码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode Nested List Weight Sum

时间:2016-04-03 10:23:15      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

原题链接在这里:https://leetcode.com/problems/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. Base case是list中的当前item, 是integer, 乘以depth加到res中return. 若不是integer, 就对其depth+1做dfs.

Time Complexity: O(n). Space: O(n).

AC Java:

 1 /**
 2  * // This is the interface that allows for creating nested lists.
 3  * // You should not implement it, or speculate about its implementation
 4  * public interface NestedInteger {
 5  *
 6  *     // @return true if this NestedInteger holds a single integer, rather than a nested list.
 7  *     public boolean isInteger();
 8  *
 9  *     // @return the single integer that this NestedInteger holds, if it holds a single integer
10  *     // Return null if this NestedInteger holds a nested list
11  *     public Integer getInteger();
12  *
13  *     // @return the nested list that this NestedInteger holds, if it holds a nested list
14  *     // Return null if this NestedInteger holds a single integer
15  *     public List<NestedInteger> getList();
16  * }
17  */
18 public class Solution {
19     public int depthSum(List<NestedInteger> nestedList) {
20         if(nestedList == null || nestedList.size() == 0){
21             return 0;
22         }
23         int [] res = {0};
24         for(NestedInteger item : nestedList){
25             dfs(item, 1, res);
26         }
27         return res[0];
28     }
29     private void dfs(NestedInteger nestInt, int depth, int [] res){
30         if(nestInt.isInteger()){
31             res[0] += depth * nestInt.getInteger();
32             return;
33         }
34         for(NestedInteger nestedItem : nestInt.getList()){
35             dfs(nestedItem, depth+1, res);
36         }
37     }
38 }

 

LeetCode Nested List Weight Sum

标签:

原文地址:http://www.cnblogs.com/Dylan-Java-NYC/p/5349215.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!