HashMap to solve advanced problems like “count subarrays with a given sum”.
O(n) to O(1).
public class PrefixSumExample
{
public static void main(String[] args)
{
int[] arr = {1, 2, 3, 4, 5};
int n = arr.length;
int[] prefix = new int[n];
prefix[0] = arr[0]; // first element
for (int i = 1; i < n; i++)
{
prefix[i] = prefix[i - 1] + arr[i]; // cumulative sum
}
// Print prefix sum array
System.out.println("Prefix Sum Array:");
for (int i = 0; i < n; i++)
{
System.out.print(prefix[i] + " ");
}
}
}
Prefix Sum Array: 1 3 6 10 15
public class RangeSumQuery
{
public static void main(String[] args)
{
int[] arr = {1, 2, 3, 4, 5};
int n = arr.length;
int[] prefix = new int[n];
// Build prefix sum array
prefix[0] = arr[0];
for (int i = 1; i < n; i++)
{
prefix[i] = prefix[i - 1] + arr[i];
}
// Query sum from index 1 to 3
int l = 1, r = 3;
int sum;
if (l == 0)
{
sum = prefix[r];
}
else
{
sum = prefix[r] - prefix[l - 1];
}
System.out.println("Sum from index " + l + " to " + r + " is: " + sum);
}
}
Sum from index 1 to 3 is: 9
Try below programs using Prefix Sum Technique in Java:
Your feedback helps us grow! If there's anything we can fix or improve, please let us know.
We’re here to make our tutorials better based on your thoughts and suggestions.