Skip to content

Commit eeac644

Browse files
committed
Feat: Implement recursive Max Depth Sum calculation for nested arrays
1 parent 709c18e commit eeac644

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
def calculate_max_depth_sum(array: list) -> int:
2+
"""
3+
Calculates the maximum sum found at any single depth level in a nested array.
4+
"""
5+
# Use a dictionary to store the total sum at each depth level
6+
depth_sums = {}
7+
8+
def find_sums(arr: list, depth: int):
9+
"""
10+
Recursive helper to populate the depth_sums dictionary.
11+
"""
12+
# Initialize the sum for the current depth if it doesn't exist
13+
depth_sums[depth] = depth_sums.get(depth, 0)
14+
15+
for element in arr:
16+
if isinstance(element, list):
17+
# Recurse: Go to the next depth level
18+
find_sums(element, depth + 1)
19+
else:
20+
# Base Case: Add the integer to the sum of the current depth
21+
depth_sums[depth] += element
22+
23+
# Start the recursion from the top-level (depth 1)
24+
find_sums(array, 1)
25+
26+
# After recursion completes, return the maximum value from all stored depth sums
27+
return max(depth_sums.values())
28+
29+
30+
if __name__ == "__main__":
31+
import doctest
32+
33+
# Doctests for the new problem
34+
print("--- Max Depth Sum Examples ---")
35+
36+
# Example 1: Max sum at depth 2 (4+5=9)
37+
# >>> calculate_max_depth_sum([1, [4, 5], 2])
38+
# 9
39+
40+
# Example 2: Max sum at depth 1 (10)
41+
# >>> calculate_max_depth_sum([10, [1, [2, 3]]])
42+
# 10
43+
44+
# Example 3: Max sum at depth 3 (100)
45+
# >>> calculate_max_depth_sum([2, [1, [100], 1], 2])
46+
# 100
47+
48+
# Example 4: Nested zeroes and negatives
49+
# The max sum can still be negative if all levels are negative
50+
# >>> calculate_max_depth_sum([-1, [-5, -2], -1])
51+
# -2 # (-1 + -1) vs (-5 + -2) = -7. Max is -2.
52+
53+
# Since the prompt asks for a simpler problem, I will only include basic doctests
54+
# but the implementation provided above works for the complex examples.
55+
56+
# Running basic doctests for validation
57+
class MaxDepthSumTests:
58+
"""
59+
Tests for calculate_max_depth_sum
60+
>>> calculate_max_depth_sum([1, [4, 5], 2])
61+
9
62+
>>> calculate_max_depth_sum([10, [1, [2, 3]]])
63+
10
64+
"""
65+
pass
66+
67+
doctest.run_docstring_examples(MaxDepthSumTests, globals())

0 commit comments

Comments
 (0)