## https://www.lintcode.com/problem/905 class Solution: def depthSumInverse(self, nestedList): max_depth = 0 def dfs(lst, depth): nonlocal max_depth weighted_sum, unweighted_sum = 0, 0 max_depth = max(max_depth, depth) for i in lst: if isinstance(i, list): result = dfs(i, depth + 1) weighted_sum += result[0] unweighted_sum += result[1] else: weighted_sum += i * (-depth) unweighted_sum += i return weighted_sum, unweighted_sum weighted_sum, unweighted_sum = dfs(nestedList, 1) return weighted_sum + unweighted_sum * (max_depth + 1) print(Solution().depthSumInverse([[1, 1], 2, [1, 1]])) print(Solution().depthSumInverse([1, [4, [6]]]))