Replace every element with the greatest element on its left side
Last Updated :
20 Sep, 2022
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)
Share your thoughts in the comments
Please Login to comment...