Replace every element with the greatest element on its left side
Given an array of integers, the task is to replace every element with the greatest element on its left side.
Note: Replace the first element with -1 as it has no element in its left.
Examples:
Input: arr[] = {4, 5, 2, 1, 7, 6}
Output: -1 4 5 5 5 7
Explanation:
Since, 4 has no element in its left, so replace it by -1.
For 5, 4 is the greatest element in its left.
For 2, 5 is the greatest element in its left.
For 1, 5 is the greatest element in its left.
For 7, 5 is the greatest element in its left.
For 6, 7 is the greatest element in its left.
Input: arr[] = {3, 2, 5, 7, 1}
Output: -1 3 3 5 7
Approach:
- Maintain a variable max_ele which will store the greatest element.
- Initially, max_ele will be equal to the element at the 0th index.
- First replace arr[0] with -1 then traverse the array
- And then replace the element with the max_ele value and update the max_ele if the element is greater than max_ele.
- Print the modified array.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
void ReplaceElements( int arr[], int n)
{
int max_ele = arr[0];
arr[0] = -1;
for ( int i = 1; i < n; ++i) {
if (max_ele > arr[i])
arr[i] = max_ele;
else if (max_ele <= arr[i]) {
int temp = arr[i];
arr[i] = max_ele;
max_ele = temp;
}
}
}
int main()
{
int arr[] = { 4, 5, 2, 1, 7, 6 };
int n = sizeof (arr) / sizeof (arr[0]);
ReplaceElements(arr, n);
for ( int i = 0; i < n; ++i)
cout << arr[i] << " " ;
return 0;
}
|
Java
import java.util.*;
class Geeks {
static void ReplaceElements( int arr[], int n)
{
int max_ele = arr[ 0 ];
arr[ 0 ] = - 1 ;
for ( int i = 1 ; i < n; ++i) {
if (max_ele > arr[i])
arr[i] = max_ele;
else if (max_ele <= arr[i]) {
int temp = arr[i];
arr[i] = max_ele;
max_ele = temp;
}
}
}
public static void main(String args[])
{
int arr[] = { 4 , 5 , 2 , 1 , 7 , 6 };
int n = arr.length;
ReplaceElements(arr, n);
for ( int i = 0 ; i < n; ++i)
System.out.println(arr[i]);
}
}
|
Python3
def ReplaceElements(arr, n):
max_ele = arr[ 0 ]
arr[ 0 ] = - 1
for i in range ( 1 , n):
if (max_ele > arr[i]):
arr[i] = max_ele
elif (max_ele < = arr[i]):
temp = arr[i]
arr[i] = max_ele
max_ele = temp
if __name__ = = "__main__" :
arr = [ 4 , 5 , 2 , 1 , 7 , 6 ]
n = len (arr)
ReplaceElements(arr, n)
for i in range (n):
print ( arr[i], end = " " )
|
C#
using System;
public class GFG {
static void ReplaceElements( int []arr, int n)
{
int max_ele = arr[0];
arr[0] = -1;
for ( int i = 1; i < n; ++i) {
if (max_ele > arr[i])
arr[i] = max_ele;
else if (max_ele <= arr[i]) {
int temp = arr[i];
arr[i] = max_ele;
max_ele = temp;
}
}
}
public static void Main()
{
int []arr = { 4, 5, 2, 1, 7, 6 };
int n = arr.Length;
ReplaceElements(arr, n);
for ( int i = 0; i < n; ++i) {
Console.Write(arr[i]+ " " );
}
}
}
|
PHP
<?php
function ReplaceElements( $arr , $n )
{
$max_ele = $arr [0];
$arr [0] = -1;
for ( $i = 1; $i < $n ; ++ $i )
{
if ( $max_ele > $arr [ $i ])
$arr [ $i ] = $max_ele ;
else if ( $max_ele <= $arr [ $i ])
{
$temp = $arr [ $i ];
$arr [ $i ] = $max_ele ;
$max_ele = $temp ;
}
}
return $arr ;
}
$arr = array (4, 5, 2, 1, 7, 6);
$n = sizeof( $arr );
$arr1 = ReplaceElements( $arr , $n );
for ( $i = 0; $i < $n ; ++ $i )
echo $arr1 [ $i ] . " " ;
|
Javascript
<script>
function ReplaceElements(arr,n)
{
let max_ele = arr[0];
arr[0] = -1;
for (let i = 1; i < n; ++i) {
if (max_ele > arr[i])
arr[i] = max_ele;
else if (max_ele <= arr[i]) {
let temp = arr[i];
arr[i] = max_ele;
max_ele = temp;
}
}
}
let arr = [ 4, 5, 2, 1, 7, 6 ];
let n = arr.length;
ReplaceElements(arr, n);
for (let i = 0; i < n; ++i)
document.write(arr[i]+ " " );
</script>
|
Time Complexity: O(N)
Auxiliary space: O(1)
Last Updated :
20 Sep, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...