C++ Program for Range sum queries without updates
Last Updated :
12 Jun, 2022
Given an array arr of integers of size n. We need to compute sum of elements from index i to index j. The queries consisting of i and j index values will be executed multiple times. Examples:
Input : arr[] = {1, 2, 3, 4, 5}
i = 1, j = 3
i = 2, j = 4
Output : 9
12
Input : arr[] = {1, 2, 3, 4, 5}
i = 0, j = 4
i = 1, j = 2
Output : 15
5
CPP
#include <bits/stdc++.h>
using namespace std;
void preCompute( int arr[], int n, int pre[])
{
pre[0] = arr[0];
for ( int i = 1; i < n; i++)
pre[i] = arr[i] + pre[i - 1];
}
int rangeSum( int i, int j, int pre[])
{
if (i == 0)
return pre[j];
return pre[j] - pre[i - 1];
}
int main()
{
int arr[] = { 1, 2, 3, 4, 5 };
int n = sizeof (arr) / sizeof (arr[0]);
int pre[n];
preCompute(arr, n, pre);
cout << rangeSum(1, 3, pre) << endl;
cout << rangeSum(2, 4, pre) << endl;
return 0;
}
|
Time Complexity: O(n), where n represents the size of the given array.
Auxiliary Space: O(n), where n represents the size of the given array.
Please refer complete article on Range sum queries without updates for more details!
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...