DDSA Solutions

Sum of Subarrays

Time: O(n)
Space: O(1)
Advertisement

Intuition

Sum of sums of all subarrays. Each element arr[i] appears in (i+1)*(n-i) subarrays.

Algorithm

  1. 1For each arr[i]: contribution = arr[i] * (i+1) * (n-i). Sum all contributions.

Common Pitfalls

  • O(n) formula. No need to enumerate all O(n^2) subarrays. Multiply by how many times element appears.
Sum of Subarrays.java
Java
// Approach: Each element arr[i] contributes to (i+1)*(n-i) subarrays. Total = sum of arr[i]*(i+1)*(n-i).
// Time: O(n) Space: O(1)
class Solution {
    public int subarraySum(int[] arr) {
        int n = arr.length;
        int totalSum = 0;

        // For each element, calculate its contribution to all subarrays
        for (int i = 0; i < n; i++)
            // Element at index i appears in:
            // - Subarrays starting at indices 0, 1, 2, ..., i (i+1 choices)
            // - Subarrays ending at indices i, i+1, i+2, ..., n-1 (n-i choices)
            // Total contribution = arr[i] * (i+1) * (n-i)
            totalSum += arr[i] * (i + 1) * (n - i);

        return totalSum;
    }
}
Advertisement
Was this solution helpful?