Search
⌘K

Leetcode 339. Nested List Weight Sum

Given a nested list of integers and sublists, compute the total sum where each integer is multiplied by its depth in the nesting. The challenge is to traverse the arbitrarily nested structure and accumulate value*depth for each integer (track depth via recursion or an explicit stack/queue).

Asked at:

Meta

Roblox


DESCRIPTION

Given a nested list of integers and sublists, compute the total sum where each integer is multiplied by its depth in the nesting. The challenge is to traverse the arbitrarily nested structure and accumulate value*depth for each integer (track depth via recursion or an explicit stack/queue).

Input:

nestedList = [1,[4,[6]]]

Output:

27


Explanation: One 1 at depth 1, one 4 at depth 2, and one 6 at depth 3: 11 + 42 + 6*3 = 27

Constraints:

  • 1 <= nestedList.length <= 50
  • The values of the integers in the nested list is in the range [-100, 100]
  • The maximum depth of any integer is less than or equal to 50

Understanding the Problem

Let's understand what we're being asked to do. We have a nested list like [1,[4,[6]]] where integers can appear at different depths of nesting.

Tracing through: the integer 1 is at depth 1 (outermost level), the integer 4 is at depth 2 (nested once), and the integer 6 is at depth 3 (nested twice). We need to compute 1*1 + 4*2 + 6*3 = 1 + 8 + 18 = 27.

Important constraint: The nesting can be arbitrarily deep - we might have [1,[2,[3,[4,[5]]]]] with many levels.

Edge cases to consider: What if the list is empty? What if there are only integers at depth 1 (no nesting)? What if a sublist is empty like [1,[],2]?

Building Intuition

Each time we encounter a sublist, we're going one level deeper in the nesting structure. When we process an integer, we need to know how deep we currently are.

This creates a natural pattern: as we explore deeper into nested lists, we increment depth; as we finish processing a sublist and return, we decrement depth.

The depth information must be carried through our traversal. We can't just iterate through elements linearly - we need to track our current nesting level as we explore.

This depth-tracking pattern is fundamental to processing hierarchical or tree-like structures where position in the hierarchy matters.

Think of exploring a file system with nested folders:

  • Root folder is depth 1
  • Files in root are at depth 1
  • Subfolder takes you to depth 2
  • Files in subfolder are at depth 2
  • When you exit a subfolder, you return to the previous depth

The nested list works the same way - each sublist is like entering a folder, and we need to remember how deep we've gone to calculate the weighted sum correctly.

Common Mistakes

Optimal Solution

Use depth-first search (DFS) with recursion to traverse the nested structure. Start at depth 1 and recursively process each element. If the element is an integer, multiply it by the current depth and add to the sum. If it's a sublist, recursively process it at depth+1. The recursive nature naturally tracks depth as we go deeper into nested lists and returns to previous depths when sublists are fully processed.

|
nested array like [1,[4,[6]]]
Visualization
def nested_depth_sum(nested_list):
"""
Calculate weighted sum where each integer is multiplied by its nesting depth.
Uses DFS recursion to traverse the nested structure.
"""
def dfs(element, depth):
# Base case: if element is an integer, return value * depth
if isinstance(element, int):
return element * depth
# Recursive case: element is a list, process each item at depth+1
total = 0
for item in element:
total += dfs(item, depth + 1)
return total
# Start DFS traversal at depth 1
result = dfs(nested_list, 1)
return result
1depth: 1[]depth: 14depth: 2[]depth: 26depth: 3

Start nested list weight sum calculation

0 / 12

Test Your Knowledge

Login to take the complexity quiz and track your progress

Complexity Analysis

Time Complexity: O(n) We visit each integer exactly once, where n is the total number of integers across all nesting levels

Space Complexity: O(d) The recursion stack depth is proportional to the maximum nesting depth d. In the worst case of deeply nested lists, this could be O(n), but typically d << n

What We've Learned

  • Recursive depth tracking: When dealing with nested structures, pass depth as a parameter through recursive calls (depth + 1 for each level) - this elegantly captures the nesting level without needing external state management or complex bookkeeping.
  • Interface-based polymorphism: The NestedInteger interface abstracts away whether an element is an integer or a list - always check `isInteger()` first before calling `getInteger()` or `getList()` to avoid runtime errors and handle both cases correctly.
  • DFS for nested traversal: Depth-First Search (recursion or stack) is the natural choice for nested list problems because it processes each branch completely before backtracking, making depth calculation straightforward compared to BFS which would require storing depth metadata with each element.
  • Alternative BFS approach: You can solve this with a queue by storing (element, depth) pairs explicitly - this trades the implicit call stack for an explicit data structure, useful when recursion depth limits are a concern or when you need level-by-level processing.
  • Accumulator pattern: Maintain a running sum that accumulates `value * depth` for each integer encountered - this single-pass approach is more efficient than storing all values and computing afterward, reducing both time and space complexity.
  • Nested structure generalization: This depth-weighted traversal pattern applies broadly to tree/graph problems (file system size calculation, organizational hierarchy costs, XML/JSON parsing with depth penalties) - whenever depth or level affects the computation, consider passing it as a parameter through your traversal.

Related Concepts and Problems to Practice

Decode String

medium

Stack

This problem involves parsing nested structures (brackets within brackets) similar to how nested lists work. Both require tracking depth/nesting levels and processing inner elements before outer ones, making it excellent practice for understanding nested structure traversal.

Path Sum II

medium

Depth-First Search

Like the nested list weight sum, this problem requires DFS traversal while maintaining state (current path/sum) and depth information. Both problems accumulate values during recursive traversal and require understanding how to pass and update state through nested structures.

Maximum Depth of a Binary Tree

easy

Depth-First Search

This is a foundational problem for understanding depth tracking in recursive traversal, which is the core concept needed for nested list weight sum. It teaches how to track and return depth information during DFS, a simpler version of the depth-weighted calculation pattern.

Test Your Understanding

Why is nested-list the right data structure for this problem?

1

nested-list provides the optimal access pattern

2

It's the only data structure that works

3

It's the easiest to implement

4

It uses the least memory

Select an answer to see the explanation

Question Timeline

See when this question was last asked and where, including any notes left by other candidates.

Mid February, 2026

Meta

Senior

Early February, 2026

Meta

Senior

Interviewer first asked to define the data structure to represent this nested input.

Late January, 2026

Roblox

Senior

Comments

Your account is free and you can post anonymously if you choose.