Replace every element of array with sum of elements on its right side
Last Updated :
28 Mar, 2023
Given an array arr[], the task is to replace every element of the array with the sum of elements on its right side.
Examples:
Input: arr[] = {1, 2, 5, 2, 2, 5}
Output: 16 14 9 7 5 0
Input: arr[] = {5, 1, 3, 2, 4}
Output: 10 9 6 4 0
Naive Approach: A simple approach is to run two loops, Outer loop to fix each element one by one and inner loop to calculate sum of elements on right side of fixed element.
C++
#include<bits/stdc++.h>
using namespace std;
void replaceElement( int arr[], int n){
for ( int i = 0; i<n; i++){
int sum = 0;
for ( int j = i+1; j<n; j++){
sum += arr[j];
}
arr[i] = sum;
}
for ( int i = 0; i<n; i++){
cout<<arr[i]<< " " ;
}
}
int main(){
int arr[] = { 1, 2, 5, 2, 2, 5 };
int n = sizeof (arr) / sizeof (arr[0]);
replaceElement(arr, n);
}
|
Java
public class GFG {
public static void main(String[] args)
{
int [] arr = { 1 , 2 , 5 , 2 , 2 , 5 };
int n = arr.length;
replaceElement(arr, n);
}
public static void replaceElement( int [] arr, int n)
{
for ( int i = 0 ; i < n; i++) {
int sum = 0 ;
for ( int j = i + 1 ; j < n; j++) {
sum += arr[j];
}
arr[i] = sum;
}
for ( int i = 0 ; i < n; i++) {
System.out.print(arr[i] + " " );
}
}
}
|
Python3
def replaceElement(arr, n):
for i in range (n):
sum = 0
for j in range (i + 1 , n):
sum + = arr[j]
arr[i] = sum
for i in range (n):
print (arr[i], end = " " )
arr = [ 1 , 2 , 5 , 2 , 2 , 5 ]
n = len (arr)
replaceElement(arr, n)
|
C#
using System;
namespace GFG {
class Program {
static void Main( string [] args)
{
int [] arr = { 1, 2, 5, 2, 2, 5 };
int n = arr.Length;
ReplaceElement(arr, n);
}
static void ReplaceElement( int [] arr, int n)
{
for ( int i = 0; i < n; i++) {
int sum = 0;
for ( int j = i + 1; j < n; j++) {
sum += arr[j];
}
arr[i] = sum;
}
for ( int i = 0; i < n; i++) {
Console.Write(arr[i] + " " );
}
}
}
}
|
Javascript
function replaceElement(arr) {
for (let i = 0; i < arr.length; i++) {
let sum = 0;
for (let j = i + 1; j < arr.length; j++) {
sum += arr[j];
}
arr[i] = sum;
}
console.log(arr.join( " " ));
}
let arr = [1, 2, 5, 2, 2, 5];
replaceElement(arr);
|
Time Complexity: O(N^2)
Auxiliary Space : O(1)
Efficient Approach: The idea is to compute the total sum of the array and then update the current element as the and in each step update the sum to the current element.
for i in arr:
arr[i] = sum - arr[i]
sum = arr[i]
Below is the implementation of the above approach:
C++
#include<bits/stdc++.h>
using namespace std;
void replaceElement( int arr[], int n)
{
int sum = 0;
for ( int i = 0; i < n; i++)
sum += arr[i];
for ( int i = 0; i < n; i++)
{
arr[i] = sum - arr[i];
sum = arr[i];
}
for ( int i = 0; i < n; i++)
cout << arr[i] << " " ;
}
int main()
{
int arr[] = { 1, 2, 5, 2, 2, 5 };
int n = sizeof (arr) / sizeof (arr[0]);
replaceElement(arr, n);
}
|
Java
import java.util.*;
class GFG {
static void replaceElement( int [] arr, int n)
{
int sum = 0 ;
for ( int i = 0 ; i < n; i++)
sum += arr[i];
for ( int i = 0 ; i < n; i++) {
arr[i] = sum - arr[i];
sum = arr[i];
}
for ( int i = 0 ; i < n; i++)
System.out.print(arr[i] + " " );
}
public static void main(String[] args)
{
int [] arr = { 1 , 2 , 5 , 2 , 2 , 5 };
int n = arr.length;
replaceElement(arr, n);
}
}
|
Python3
def replaceElement(arr, n):
sum = 0 ;
for i in range ( 0 , n):
sum + = arr[i];
for i in range ( 0 , n):
arr[i] = sum - arr[i];
sum = arr[i];
for i in range ( 0 , n):
print (arr[i], end = " " );
if __name__ = = "__main__" :
arr = [ 1 , 2 , 5 , 2 , 2 , 5 ]
n = len (arr)
replaceElement(arr, n)
|
C#
using System;
class GFG{
static void replaceElement( int [] arr, int n)
{
int sum = 0;
for ( int i = 0; i < n; i++)
sum += arr[i];
for ( int i = 0; i < n; i++)
{
arr[i] = sum - arr[i];
sum = arr[i];
}
for ( int i = 0; i < n; i++)
Console.Write(arr[i] + " " );
}
public static void Main()
{
int [] arr = { 1, 2, 5, 2, 2, 5 };
int n = arr.Length;
replaceElement(arr, n);
}
}
|
Javascript
<script>
function replaceElement(arr, n)
{
let sum = 0;
for (let i = 0; i < n; i++)
sum += arr[i];
for (let i = 0; i < n; i++)
{
arr[i] = sum - arr[i];
sum = arr[i];
}
for (let i = 0; i < n; i++)
document.write(arr[i] + " " );
}
let arr = [ 1, 2, 5, 2, 2, 5 ];
let n = arr.length;
replaceElement(arr, n);
</script>
|
Time Complexity: O(N)
Auxiliary Space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...