Find sum in range L to R in given sequence of integers

22 Nov, 2021
Given an array arr[] of integers and a sequence of the form:  
[ 2, 3, 0, 1, 6, 7, 4, 5, ... ].  
Also given two integer L and R such that . The task is to find the sum of all numbers in given range from L to R.Examples:  
Input : L = 0, R = 5
Output : 19
Explanation : 
The arr[] is {2, 3, 0, 1, 6, 7}.
sum = arr[0] + arr[1] + arr[2] + arr[3] + arr[4] + arr[5]
sum = 2 + 3 + 0 + 1 + 6 + 7
Hence, the sum is 19.

Input : L = 2, R = 5
Output : 14
Explanation : 
The arr[] is {0, 1, 6, 7}.
sum = arr[2] + arr[3] + arr[4] + arr[5] 
sum = 0 + 1 + 6 + 7
Hence, the sum is 14.
 
Approach: To solve the question mentioned above we first have to observe the sequence of the array and understand how is it generated. The given array is generated from a sequence of whole numbers which is [ 0, 1, 2, 3, 4, 5, 6, ... ]. Initially we add 2 to the first two integers, then we subtract 2 from the next two integers and this goes on. So our newly formed array looks like [ 0+2, 1+2, 2-2, 3-2, 4+2, 5+2, 6-2, 7-2, ... ]. Hence we generate this new sequence of integers up to R and store it in array. Finally, calculate the sum from indices in range L to R and return it.Below is the implementation of the above approach:  
C++
Java
Python3
C#
Javascript
// C++ program to find the// sum in given range L to R #include <bits/stdc++.h>using namespace std; // Function to find the sum// within the given rangeint findSum(int L, int R){    vector<int> arr;     // generating array from given sequence    int i = 0;    int x = 2;    while (i <= R) {        arr.push_back(i + x);         if (i + 1 <= R)            arr.push_back(i + 1 + x);         x *= -1;         i += 2;    }     // calculate the desired sum    int sum = 0;     for (int i = L; i <= R; ++i)         sum += arr[i];     // return the sum    return sum;} // Driven codeint main(){     // initialise the range    int L = 0, R = 5;     cout << findSum(L, R);     return 0;}
// Java program to find the// sum in given range L to Rimport java.util.*; class GFG{     // Function to find the sum// within the given rangepublic static int findSum(int L, int R){    ArrayList<Integer> arr = new ArrayList<>();     // Generating array from given sequence    int i = 0;    int x = 2;    while (i <= R)    {        arr.add(i + x);         if (i + 1 <= R)            arr.add(i + 1 + x);         x *= -1;         i += 2;    }     // Calculate the desired sum    int sum = 0;     for(i = L; i <= R; ++i)       sum += arr.get(i);     // return the sum    return sum;} // Driver codepublic static void main(String[] args){         // Initialise the range    int L = 0, R = 5;     System.out.println(findSum(L, R));}} // This code is contributed by jrishabh99
# Python3 program to find the# sum in given range L to R # Function to find the sum# within the given rangedef findSum(L, R) :    arr = []     # generating array from given sequence    i = 0    x = 2    k = 0    while (i <= R) :        arr.insert(k, i + x)        k += 1        if (i + 1 <= R) :            arr.insert(k, i + 1 + x)        k += 1        x *= -1        i += 2     # calculate the desired sum    sum = 0     for i in range(L, R + 1) :        sum += arr[i]     # return the sum    return sum # Driver code # initialise the rangeL = 0R = 5print(findSum(L, R)) # This code is contributed by Sanjit_Prasad
// C# program to find the// sum in given range L to Rusing System;using System.Collections; class GFG{     // Function to find the sum// within the given rangepublic static int findSum(int L, int R){    ArrayList arr = new ArrayList();     // Generating array from given sequence    int i = 0;    int x = 2;    while (i <= R)    {        arr.Add(i + x);         if (i + 1 <= R)            arr.Add(i + 1 + x);         x *= -1;        i += 2;    }     // Calculate the desired sum    int sum = 0;     for(i = L; i <= R; ++i)        sum += (int)arr[i];     // return the sum    return sum;} // Driver codepublic static void Main(string[] args){         // Initialise the range    int L = 0, R = 5;     Console.Write(findSum(L, R));}} // This code is contributed by rutvik_56
<script>//Javascript  program to find the// sum in given range L to R // Function to find the sum// within the given rangefunction findSum( L,  R){    var arr=[];     // generating array from given sequence    var i = 0;    var x = 2;    while (i <= R) {        arr.push(i + x);         if (i + 1 <= R)            arr.push(i + 1 + x);         x *= -1;         i += 2;    }     // calculate the desired sum    var sum = 0;     for (var i = L; i <= R; ++i)         sum += arr[i];     // return the sum    return sum;}   var L = 0, R = 5;document.write( findSum(L, R));  //This code is contributed by SoumikMondal</script>
19
 
Time Complexity : O(N)
Auxiliary Space: O(N) 
Sanjit_Prasad
jrishabh99
rutvik_56
SoumikMondal
subham348
Arrays
Greedy
Mathematical
Pattern Searching
Arrays
Greedy
Mathematical
Pattern Searching
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.