Replace array elements by sum of next two consecutive elements
Given an array arr[] of size n, The task is to replace every element of the array by the sum of next two consecutive elements in a circular manner i.e. arr[0] = arr[1] + arr[2], arr[1] = arr[2] + arr[3], … arr[n – 1] = arr[0] + arr[1].
Examples:
Input: arr[] = {3, 4, 2, 1, 6}
Output: 6 3 7 9 7
Input: arr[] = {5, 2, 1, 3, 8}
Output: 3 4 11 13 7
Approach:
Store the first and second elements of the array in variables first and second. Now for every element except the last and the second last element of the array, update arr[i] = arr[i + 1] + arr[i + 2]. Then update the last and the second last element as arr[n – 2] = arr[n – 1] + first and arr[n – 1] = first + second.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
void printArr( int arr[], int n)
{
for ( int i = 0; i < n; i++)
cout << arr[i] << " " ;
}
void updateArr( int arr[], int n)
{
if (n < 3)
return ;
int first = arr[0];
int second = arr[1];
for ( int i = 0; i < n - 2; i++)
arr[i] = arr[i + 1] + arr[i + 2];
arr[n - 2] = arr[n - 1] + first;
arr[n - 1] = first + second;
printArr(arr, n);
}
int main()
{
int arr[] = { 3, 4, 2, 1, 6 };
int n = sizeof (arr) / sizeof (arr[0]);
updateArr(arr, n);
return 0;
}
|
Java
class GFG
{
static void printArr( int [] arr, int n)
{
for ( int i = 0 ; i < n; i++)
{
System.out.print(arr[i] + " " );
}
}
static void updateArr( int [] arr, int n)
{
if (n < 3 )
{
return ;
}
int first = arr[ 0 ];
int second = arr[ 1 ];
for ( int i = 0 ; i < n - 2 ; i++)
{
arr[i] = arr[i + 1 ] + arr[i + 2 ];
}
arr[n - 2 ] = arr[n - 1 ] + first;
arr[n - 1 ] = first + second;
printArr(arr, n);
}
public static void main(String[] args)
{
int [] arr = { 3 , 4 , 2 , 1 , 6 };
int n = arr.length;
updateArr(arr, n);
}
}
|
Python3
def printArr(arr, n):
for i in range (n):
print (arr[i], end = " " )
def updateArr(arr, n):
if (n < 3 ):
return
first = arr[ 0 ]
second = arr[ 1 ]
for i in range (n - 2 ):
arr[i] = arr[i + 1 ] + arr[i + 2 ]
arr[n - 2 ] = arr[n - 1 ] + first
arr[n - 1 ] = first + second
printArr(arr, n)
if __name__ = = '__main__' :
arr = [ 3 , 4 , 2 , 1 , 6 ]
n = len (arr)
updateArr(arr, n)
|
C#
using System;
class GFG
{
static void printArr( int []arr, int n)
{
for ( int i = 0; i < n; i++)
Console.Write(arr[i] + " " );
}
static void updateArr( int []arr, int n)
{
if (n < 3)
return ;
int first = arr[0];
int second = arr[1];
for ( int i = 0; i < n - 2; i++)
arr[i] = arr[i + 1] + arr[i + 2];
arr[n - 2] = arr[n - 1] + first;
arr[n - 1] = first + second;
printArr(arr, n);
}
public static void Main()
{
int []arr = { 3, 4, 2, 1, 6 };
int n = arr.Length;
updateArr(arr, n);
}
}
|
PHP
<?php
function printArr( $arr , $n )
{
for ( $i = 0; $i < $n ; $i ++)
echo $arr [ $i ], " " ;
}
function updateArr( $arr , $n )
{
if ( $n < 3)
return ;
$first = $arr [0];
$second = $arr [1];
for ( $i = 0; $i < ( $n - 2); $i ++)
$arr [ $i ] = $arr [ $i + 1] +
$arr [ $i + 2];
$arr [ $n - 2] = $arr [ $n - 1] + $first ;
$arr [ $n - 1] = $first + $second ;
printArr( $arr , $n );
}
$arr = array (3, 4, 2, 1, 6 );
$n = sizeof( $arr );
updateArr( $arr , $n );
?>
|
Javascript
<script>
function printArr( arr, n)
{
for (let i = 0; i < n; i++)
document.write(arr[i] + " " );
}
function updateArr( arr, n)
{
if (n < 3)
return ;
let first = arr[0];
let second = arr[1];
for (let i = 0; i < n - 2; i++)
arr[i] = arr[i + 1] + arr[i + 2];
arr[n - 2] = arr[n - 1] + first;
arr[n - 1] = first + second;
printArr(arr, n);
}
let arr = [ 3, 4, 2, 1, 6 ];
let n = arr.length;
updateArr(arr, n);
</script>
|
Time complexity: O(n) where n is length of given array
Auxiliary Space: O(1)
Last Updated :
14 Sep, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...