Sum of Subarrays
JavaView on GFG
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
- 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?