LeetCode Problem

How to Solve Sum of Subarray Minimums

The problem asks you to calculate the sum of the minimum values of every contiguous subarray in a given array, taking the sum modulo 10^9 + 7. Efficient solutions involve dynamic programming and stack-based approaches to minimize time complexity and avoid brute force enumeration.

GhostInterview Help

Need help with Sum of Subarray Minimums without spending extra time grinding it?

GhostInterview can read Sum of Subarray Minimums from a screenshot, generate the answer path, explain the complexity, and support solver-first interview workflows when you need direct help fast.

Screenshot Input

Capture the prompt fast instead of rewriting the problem by hand.

Answer + Complexity

Get the solution path, trade-offs, and complexity summary in one pass.

Stealth Workflow

Stay outside captured layers on supported screen-share workflows.

Problem #907State transition dynamic programmingReviewed 2026-03-07
Difficulty
Medium
Primary pattern
State transition dynamic programming
Answer-first problem summary
Step-by-step approach and complexity
GhostInterview solver workflow

The problem asks you to calculate the sum of the minimum values of every contiguous subarray in a given array, taking the sum modulo 10^9 + 7. Efficient solutions involve dynamic programming and stack-based approaches to minimize time complexity and avoid brute force enumeration.

Problem Statement

Given an array of integers arr, you need to find the sum of the minimum values of all contiguous subarrays of arr. Since the answer may be large, return the sum modulo $10^9 + 7$.

For example, for the input arr = [3,1,2,4], the subarrays are [3], [1], [2], [4], [3,1], [1,2], [2,4], [3,1,2], [1,2,4], and [3,1,2,4]. The corresponding minimum values are 3, 1, 2, 4, 1, 1, 2, 1, 1, and 1, and the sum of these values is 17.

Examples

Example 1

Input: arr = [3,1,2,4]

Output: 17

Subarrays are [3], [1], [2], [4], [3,1], [1,2], [2,4], [3,1,2], [1,2,4], [3,1,2,4]. Minimums are 3, 1, 2, 4, 1, 1, 2, 1, 1, 1. Sum is 17.

Example 2

Input: arr = [11,81,94,43,3]

Output: 444

Example details omitted.

Constraints

  • 1 <= arr.length <= 3 * 104
  • 1 <= arr[i] <= 3 * 104

Solution Approach

Dynamic Programming with State Transitions

Use dynamic programming to keep track of the sum of minimums. Define dp[i] as the sum of minimums of all subarrays ending at index i. This approach computes the sum efficiently by leveraging state transitions from previous subarrays.

Monotonic Stack

A monotonic stack helps in determining the next smaller element for each element of the array, reducing redundant calculations. This stack-based approach optimizes the solution by ensuring every element is processed efficiently.

Modulo Operation for Large Sums

As the result can be very large, applying the modulo operation at every step ensures that the final result remains within bounds. This is crucial for avoiding overflow and meeting the problem's constraints.

Complexity Analysis

MetricValue
TimeDepends on the final approach
SpaceDepends on the final approach

The time complexity of the optimal solution is O(n), where n is the length of the input array, because each element is processed at most twice (once when added to the stack and once when removed). The space complexity is O(n), primarily due to the stack and dynamic programming array.

What Interviewers Usually Probe

  • Ensure the candidate is comfortable explaining dynamic programming with state transitions.
  • Check if the candidate can optimize the solution using a monotonic stack.
  • Look for understanding of the modulo operation in the context of large numbers.

Common Pitfalls or Variants

Common pitfalls

  • Brute forcing the sum of minimums by iterating over all subarrays leads to a time complexity of O(n^2), which is inefficient for large arrays.
  • Misunderstanding the use of the modulo operation can result in incorrect answers, especially for large sums.
  • Overcomplicating the solution by using unnecessary data structures may hinder the performance of the algorithm.

Follow-up variants

  • Try solving this problem using a sliding window approach for further optimization.
  • Consider variations where the modulo is different, or the array contains negative numbers.
  • Attempt to solve this problem using a recursive approach with memoization.

How GhostInterview Helps

  • GhostInterview helps by guiding you through the correct use of dynamic programming and stack-based optimizations, enabling an efficient solution.
  • It offers step-by-step insights into solving the problem with state transitions, ensuring a deep understanding of the approach.
  • GhostInterview assists by helping you implement the modulo operation correctly, avoiding overflow and ensuring the final result is correct.

Topic Pages

FAQ

How do I optimize the Sum of Subarray Minimums problem?

You can optimize the problem using dynamic programming combined with a monotonic stack, reducing the time complexity to O(n).

What is the time complexity of the optimal solution?

The optimal solution has a time complexity of O(n) due to the efficient processing of each element with a monotonic stack.

What pattern does the Sum of Subarray Minimums problem follow?

This problem follows the state transition dynamic programming pattern, where each state builds upon the results of previous states.

How does a monotonic stack help in solving this problem?

A monotonic stack helps by efficiently finding the next smaller element for each element in the array, thus avoiding redundant calculations.

Why do I need to use modulo 10^9 + 7 in this problem?

Modulo 10^9 + 7 is used to prevent integer overflow and keep the result within the bounds specified by the problem constraints.

GhostInterview Solver

Need direct help with Sum of Subarray Minimums instead of spending more time grinding it?

Download GhostInterview when you want a LeetCode solver, not another long practice loop. Capture Sum of Subarray Minimums from a screenshot, get the answer path and complexity, and use supported stealth workflows that stay outside captured layers.

Screenshot Input

Capture the prompt fast instead of rewriting the problem by hand.

Answer + Complexity

Get the solution path, trade-offs, and complexity summary in one pass.

Stealth Workflow

Stay outside captured layers on supported screen-share workflows.