Program to find minimum value to insert at beginning for all positive prefix sums in Python

Suppose we have a list of numbers called nums. We have to find the minimum positive value that we can insert at the beginning of nums so that the prefix sums of the resulting list are all positive (greater than 0).

So, if the input is like nums = [3, -6, 4, 3], then the output will be 4, because if we insert 4 to the list then we have [4, 3, -6, 4, 3]. Now the prefix sums are [4, 7, 1, 5, 8], all are positive.

Algorithm

To solve this, we will follow these steps −

  • Insert 0 into nums at position 0 (represents no initial value added)

  • Calculate prefix sums by iterating through the array

  • Find the minimum prefix sum

  • Return 1 - minimum prefix sum (ensures all sums become positive)

Example

Let us see the following implementation to get better understanding −

def solve(nums):
    # Create a copy to avoid modifying original list
    prefix_sums = [0]  # Start with 0 (no initial value)
    
    # Calculate prefix sums
    current_sum = 0
    for num in nums:
        current_sum += num
        prefix_sums.append(current_sum)
    
    # Find minimum prefix sum
    min_prefix = min(prefix_sums)
    
    # Return minimum value to make all prefix sums positive
    return 1 - min_prefix

nums = [3, -6, 4, 3]
print(f"Input: {nums}")
print(f"Minimum value to insert: {solve(nums)}")

# Let's verify the solution
min_val = solve(nums)
result = [min_val] + nums
print(f"Modified list: {result}")

# Calculate and show prefix sums
prefix_sums = []
current = 0
for val in result:
    current += val
    prefix_sums.append(current)
print(f"Prefix sums: {prefix_sums}")

The output of the above code is −

Input: [3, -6, 4, 3]
Minimum value to insert: 4
Modified list: [4, 3, -6, 4, 3]
Prefix sums: [4, 7, 1, 5, 8]

How It Works

The algorithm works by calculating all possible prefix sums and finding the most negative one. If the minimum prefix sum is -3, we need to add at least 4 (1 - (-3) = 4) to make all prefix sums positive.

def solve_step_by_step(nums):
    print(f"Original array: {nums}")
    
    # Calculate prefix sums
    prefix_sums = [0]
    current_sum = 0
    
    for i, num in enumerate(nums):
        current_sum += num
        prefix_sums.append(current_sum)
        print(f"After adding {num}: prefix sum = {current_sum}")
    
    print(f"All prefix sums: {prefix_sums}")
    min_prefix = min(prefix_sums)
    print(f"Minimum prefix sum: {min_prefix}")
    
    result = 1 - min_prefix
    print(f"Minimum value to insert: {result}")
    
    return result

# Test with example
nums = [3, -6, 4, 3]
solve_step_by_step(nums)
Original array: [3, -6, 4, 3]
After adding 3: prefix sum = 3
After adding -6: prefix sum = -3
After adding 4: prefix sum = 1
After adding 3: prefix sum = 4
All prefix sums: [0, 3, -3, 1, 4]
Minimum prefix sum: -3
Minimum value to insert: 4

Conclusion

This algorithm efficiently finds the minimum positive value needed by calculating prefix sums and determining how much to add to make the smallest prefix sum positive. The key insight is that 1 minus the minimum prefix sum gives us the required value.

Updated on: 2026-03-26T15:52:16+05:30

280 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements