Nested List Weight Sum
Problem: Nested List Weight Sum
Do depth-first search on every element. If we get integer multiply it with depth and add to sum. If we get list, continue to do depth-first search with further depth until we get integers.
Code in Python:
# """
# This is the interface that allows for creating nested lists.
# You should not implement it, or speculate about its implementation
# """
#class NestedInteger(object):
# def isInteger(self):
# """
# @return True if this NestedInteger holds a single integer, rather than a nested list.
# :rtype bool
# """
#
# def getInteger(self):
# """
# @return the single integer that this NestedInteger holds, if it holds a single integer
# Return None if this NestedInteger holds a nested list
# :rtype int
# """
#
# def getList(self):
# """
# @return the nested list that this NestedInteger holds, if it holds a nested list
# Return None if this NestedInteger holds a single integer
# :rtype List[NestedInteger]
# """
class Solution(object):
def depthSum(self, nestedList):
"""
:type nestedList: List[NestedInteger]
:rtype: int
"""
def dfs(nestedList, depth):
return sum(depth*element.getInteger() if element.isInteger() else dfs(element.getList(), depth+1) for element in nestedList)
return dfs(nestedList, 1)