Replace every array element by multiplication of previous and next
Last Updated :
07 Mar, 2023
Given an array of integers, update every element with the multiplication of previous and next elements with the following exceptions.
a) The First element is replaced by the multiplication of the first and second.
b) The last element is replaced by multiplication of the last and second last.
Example:
Input : arr[] = {2, 3, 4, 5, 6}
Output : arr[] = {6, 8, 15, 24, 30}
// We get the above output using following
// arr[] = {2*3, 2*4, 3*5, 4*6, 5*6}
Source: Top 25 Interview Questions
Simple Solution is to create an auxiliary array ay, copy the contents of the given array to the auxiliary array. Finally, traverse the auxiliary array and update the given array using copied value. The Time complexity of this solution is O(n), but it requires O(n) extra space.
An efficient solution can solve the problem in O(n) time and O(1) space. The idea is to keep track of previous elements in the loop.
Flowchart:
Flowchart- modify
Algorithm:
- Create a method named "modify" that takes an integer array "arr" and its length "n" as input parameters.
- now check if the length is less than or equal to 1, if yes then return.
- Create a variable named "prev" and initialize it with the first element of the array.
- Then change the value of the first element of the array with the product of the first and second elements.
- Start a for loop and traverse the array from the second element to the second last element
- In a loop, Create a variable named "curr" and initialize it with the value of the current element of the array.
- Now, update the current element of the array with the product of the previous and next elements.
- Set the value of "prev" with the value of "curr".
- Now out of the loop, update the value of the last element of the array with the product of the second last, and last elements.
Below is the implementation of this idea.
C++
// C++ program to update every array element with
// multiplication of previous and next numbers in array
#include<iostream>
using namespace std;
void modify(int arr[], int n)
{
// Nothing to do when array size is 1
if (n <= 1)
return;
// store current value of arr[0] and update it
int prev = arr[0];
arr[0] = arr[0] * arr[1];
// Update rest of the array elements
for (int i=1; i<n-1; i++)
{
// Store current value of next interaction
int curr = arr[i];
// Update current value using previous value
arr[i] = prev * arr[i+1];
// Update previous value
prev = curr;
}
// Update last array element
arr[n-1] = prev * arr[n-1];
}
// Driver program
int main()
{
int arr[] = {2, 3, 4, 5, 6};
int n = sizeof(arr)/sizeof(arr[0]);
modify(arr, n);
for (int i=0; i<n; i++)
cout << arr[i] << " ";
return 0;
}
Java
// Java program to update every array element with
// multiplication of previous and next numbers in array
import java.io.*;
import java.util.*;
import java.lang.Math;
class Multiply
{
static void modify(int arr[], int n)
{
// Nothing to do when array size is 1
if (n <= 1)
return;
// store current value of arr[0] and update it
int prev = arr[0];
arr[0] = arr[0] * arr[1];
// Update rest of the array elements
for (int i=1; i<n-1; i++)
{
// Store current value of next interaction
int curr = arr[i];
// Update current value using previous value
arr[i] = prev * arr[i+1];
// Update previous value
prev = curr;
}
// Update last array element
arr[n-1] = prev * arr[n-1];
}
// Driver program to test above function
public static void main(String[] args)
{
int arr[] = {2, 3, 4, 5, 6};
int n = arr.length;
modify(arr, n);
for (int i=0; i<n; i++)
System.out.print(arr[i]+" ");
}
}
/* This code is contributed by Devesh Agrawal */
Python3
# Python program to update every array element with
# multiplication of previous and next numbers in array
def modify(arr, n):
# Nothing to do when array size is 1
if n <= 1:
return
# store current value of arr[0] and update it
prev = arr[0]
arr[0] = arr[0] * arr[1]
# Update rest of the array elements
for i in range(1, n-1):
# Store current value of next interaction
curr = arr[i];
# Update current value using previous value
arr[i] = prev * arr[i+1]
# Update previous value
prev = curr
# Update last array element
arr[n-1] = prev * arr[n-1]
# Driver program
arr = [2, 3, 4, 5, 6]
n = len(arr)
modify(arr, n)
for i in range (0, n):
print(arr[i],end=" ")
# This code is contributed by
# Smitha Dinesh Semwal
C#
// C# program to update every array
// element with multiplication of
// previous and next numbers in array
using System;
class GFG
{
static void modify(int []arr, int n)
{
// Nothing to do when array size is 1
if (n <= 1)
return;
// store current value of arr[0] and update it
int prev = arr[0];
arr[0] = arr[0] * arr[1];
// Update rest of the array elements
for (int i=1; i<n-1; i++)
{
// Store current value of next interaction
int curr = arr[i];
// Update current value using previous value
arr[i] = prev * arr[i+1];
// Update previous value
prev = curr;
}
// Update last array element
arr[n-1] = prev * arr[n-1];
}
// Driver program to test above function
public static void Main()
{
int []arr = {2, 3, 4, 5, 6};
int n = arr.Length;
modify(arr, n);
for (int i=0; i<n; i++)
Console.Write(arr[i]+" ");
}
}
// This code is contributed by Sam007
PHP
<?php
// PHP program to update every array
// element with multiplication of previous
// and next numbers in array
function modify(&$arr, $n)
{
// Nothing to do when array size is 1
if ($n <= 1)
return;
// store current value of arr[0]
// and update it
$prev = $arr[0];
$arr[0] = $arr[0] * $arr[1];
// Update rest of the array elements
for ($i = 1; $i < $n - 1; $i++)
{
// Store current value of
// next interaction
$curr = $arr[$i];
// Update current value using
// previous value
$arr[$i] = $prev * $arr[$i + 1];
// Update previous value
$prev = $curr;
}
// Update last array element
$arr[$n-1] = $prev * $arr[$n - 1];
}
// Driver Code
$arr = array (2, 3, 4, 5, 6);
$n = sizeof($arr);
modify($arr, $n);
for ($i = 0; $i < $n; $i++)
echo $arr[$i] ." ";
// This code is contributed
// by ChitraNayal
?>
JavaScript
<script>
// Javascript program to update every array element with
// multiplication of previous and next numbers in array
function modify(arr, n)
{
// Nothing to do when array size is 1
if (n <= 1)
return;
// store current value of arr[0] and update it
let prev = arr[0];
arr[0] = arr[0] * arr[1];
// Update rest of the array elements
for (let i = 1; i < n - 1; i++)
{
// Store current value of next interaction
let curr = arr[i];
// Update current value using previous value
arr[i] = prev * arr[i+1];
// Update previous value
prev = curr;
}
// Update last array element
arr[n-1] = prev * arr[n-1];
}
// Driver program
let arr = [2, 3, 4, 5, 6];
let n = arr.length;
modify(arr, n);
for (let i = 0; i < n; i++)
document.write(arr[i] + " ");
// This code is contributed by subham348.
</script>
Time complexity: O(n) where n is size of given array
Auxiliary Space: O(1) because it is using constant space for variables
Similar Reads
Replace every array element by sum of previous and next Given an array of integers, update every element with sum of previous and next elements with following exceptions. First element is replaced by sum of first and second. Last element is replaced by sum of last and second last. Examples: Input : arr[] = { 2, 3, 4, 5, 6} Output : 5 6 8 10 11 Explanatio
7 min read
Replace every array element with maximum of K next and K previous elements Given an array arr, the task is to replace each array element by the maximum of K next and K previous elements. Example: Input: arr[] = {12, 5, 3, 9, 21, 36, 17}, K=2Output: 5 12 21 36 36 21 36 Input: arr[] = { 13, 21, 19}, K=1Output: 21, 19, 21 Naive Approach: Follow the below steps to solve this p
15 min read
Replace every array element by Bitwise Xor of previous and next element Given an array of integers, replace every element with xor of previous and next elements with following exceptions. First element is replaced by xor of first and second. Last element is replaced by xor of last and second last. Examples: Input: arr[] = { 2, 3, 4, 5, 6}Output: 1 6 6 2 3 We get the fol
10 min read
Replace all elements of given Array with average of previous K and next K elements Given an array arr[] containing N positive integers and an integer K. The task is to replace every array element with the average of previous K and next K elements. Also, if K elements are not present then adjust use the maximum number of elements available before and after. Examples: Input: arr[] =
11 min read
Generate an array having Bitwise AND of the previous and the next element Given an array of integers arr[] of N elements, the task is to generate another array having (Bitwise) AND of previous and next elements with the following exceptions. The first element is the bitwise AND of the first and the second element.The last element is the bitwise AND of the last and the sec
5 min read