# Replace every element with the smallest element on its left side

Given an array of integers, the task is to replace every element with the smallest 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 4 2 1 1
Since, 4 has no element in its left, so replace it by -1.
For 5, 4 is the smallest element in its left.
For 2, 4 is the smallest element in its left.
For 1, 2 is the smallest element in its left.
For 7, 1 is the smallest element in its left.
For 6, 1 is the smallest element in its left.

Input: arr[] = {3, 2, 5, 7, 1}
Output: -1 3 2 2 2
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

1. Maintain a variable min_ele which will store the smallest element.
2. Initially, min_ele will be equal to the element at the 0th index.
3. First replace arr with -1 then traverse the array
4. And then replace the element with the min_ele value and update the min_ele if the element is smaller than min_ele.
5. Print the modified array.

Below is the implementation of the above approach:

## C++

 `// C++ program to Replace every ` `// element with the smaller element ` `// on its left side ` `#include ` `using` `namespace` `std; ` ` `  `// Function to replace the elements ` `void` `ReplaceElements(``int` `arr[], ``int` `n) ` `{ ` `    ``// MIN value initialised ` `    ``// to element at 0th index ` `    ``int` `min_ele = arr; ` `    ``arr = -1; ` ` `  `    ``for` `(``int` `i = 1; i < n; ++i) { ` ` `  `        ``// If min_ele is smaller than arr[i] ` `        ``// then just replace arr[i] with min_ele ` `        ``if` `(min_ele < arr[i]) ` `            ``arr[i] = min_ele; ` ` `  ` `  `        ``// Else if update the min_ele also ` `        ``else` `if` `(min_ele >= arr[i]) { ` `            ``int` `temp = arr[i]; ` `            ``arr[i] = min_ele; ` `            ``min_ele = temp; ` `        ``} ` `    ``} ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `arr[] = { 4, 5, 2, 1, 7, 6 }; ` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr); ` ` `  `    ``// Replace the elements ` `    ``// with the smaller element ` `    ``// on its left side ` `    ``ReplaceElements(arr, n); ` ` `  `    ``// Print the modified array ` `    ``for` `(``int` `i = 0; i < n; ++i) ` `        ``cout << arr[i] << ``" "``; ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java program to Replace every  ` `// element with the smaller element  ` `// on its left side  ` ` `  `class` `GFG { ` ` `  `// Function to replace the elements  ` `    ``static` `void` `ReplaceElements(``int` `arr[], ``int` `n) { ` `        ``// MIN value initialised  ` `        ``// to element at 0th index  ` `        ``int` `min_ele = arr[``0``]; ` `        ``arr[``0``] = -``1``; ` ` `  `        ``for` `(``int` `i = ``1``; i < n; ++i) { ` ` `  `            ``// If min_ele is smaller than arr[i]  ` `            ``// then just replace arr[i] with min_ele  ` `            ``if` `(min_ele < arr[i]) { ` `                ``arr[i] = min_ele; ` `            ``} ``// Else if update the min_ele also  ` `            ``else` `if` `(min_ele >= arr[i]) { ` `                ``int` `temp = arr[i]; ` `                ``arr[i] = min_ele; ` `                ``min_ele = temp; ` `            ``} ` `        ``} ` `    ``} ` ` `  `// Driver code  ` `    ``public` `static` `void` `main(String[] args) { ` `        ``int` `arr[] = {``4``, ``5``, ``2``, ``1``, ``7``, ``6``}; ` `        ``int` `n = arr.length; ` ` `  `        ``// Replace the elements  ` `        ``// with the smaller element  ` `        ``// on its left side  ` `        ``ReplaceElements(arr, n); ` ` `  `        ``// Print the modified array  ` `        ``for` `(``int` `i = ``0``; i < n; ++i) { ` `            ``System.out.print(arr[i] + ``" "``); ` `        ``} ` `    ``} ` `} ` ` `  `// This code is contributed by Rajput-JI  `

## Python3

 `# Python3 program to Replace every ` `# element with the smaller element ` `# on its left side ` ` `  `# Function to replace the elements ` `def` `ReplaceElements(arr, n): ` ` `  `    ``# MIN value initialised ` `    ``# to element at 0th index ` `    ``min_ele ``=` `arr[``0``] ` `    ``arr[``0``] ``=` `-``1` ` `  `    ``for` `i ``in` `range``(``1``, n): ` ` `  `        ``# If min_ele is smaller than arr[i] ` `        ``# then just replace arr[i] with min_ele ` `        ``if` `(min_ele < arr[i]): ` `            ``arr[i] ``=` `min_ele ` ` `  `        ``# Else if update the min_ele also ` `        ``elif` `(min_ele >``=` `arr[i]) : ` `            ``temp ``=` `arr[i] ` `            ``arr[i] ``=` `min_ele ` `            ``min_ele ``=` `temp ` ` `  `# Driver code ` `if` `__name__ ``=``=` `"__main__"``: ` ` `  `    ``arr ``=` `[ ``4``, ``5``, ``2``, ``1``, ``7``, ``6` `] ` `    ``n ``=` `len` `(arr) ` ` `  `    ``# Replace the elements ` `    ``# with the smaller element ` `    ``# on its left side ` `    ``ReplaceElements(arr, n) ` ` `  `    ``# Print the modified array ` `    ``for` `i ``in` `range``( n): ` `        ``print` `(arr[i], end ``=` `" "``) ` ` `  `# This code is contributed ` `# by ChitraNayal `

## C#

 `// C# program to Replace every  ` `// element with the smaller element  ` `// on its left side  ` `using` `System; ` `public` `class` `GFG {  ` ` `  `// Function to replace the elements  ` `    ``static` `void` `ReplaceElements(``int` `[]arr, ``int` `n) { ` `        ``// MIN value initialised  ` `        ``// to element at 0th index  ` `        ``int` `min_ele = arr; ` `        ``arr = -1; ` ` `  `        ``for` `(``int` `i = 1; i < n; ++i) { ` ` `  `            ``// If min_ele is smaller than arr[i]  ` `            ``// then just replace arr[i] with min_ele  ` `            ``if` `(min_ele < arr[i]) { ` `                ``arr[i] = min_ele; ` `            ``} ``// Else if update the min_ele also  ` `            ``else` `if` `(min_ele >= arr[i]) { ` `                ``int` `temp = arr[i]; ` `                ``arr[i] = min_ele; ` `                ``min_ele = temp; ` `            ``} ` `        ``} ` `    ``} ` ` `  `// Driver code  ` `    ``public` `static` `void` `Main() { ` `        ``int` `[]arr = {4, 5, 2, 1, 7, 6}; ` `        ``int` `n = arr.Length; ` ` `  `        ``// Replace the elements  ` `        ``// with the smaller element  ` `        ``// on its left side  ` `        ``ReplaceElements(arr, n); ` ` `  `        ``// Print the modified array  ` `        ``for` `(``int` `i = 0; i < n; ++i) { ` `            ``Console.Write(arr[i] + ``" "``); ` `        ``} ` `    ``} ` `} ` ` `  `// This code is contributed by Rajput-JI  `

## PHP

 `= ``\$arr``[``\$i``]) ` `        ``{ ` `            ``\$temp` `= ``\$arr``[``\$i``]; ` `            ``\$arr``[``\$i``] = ``\$min_ele``; ` `            ``\$min_ele` `= ``\$temp``; ` `        ``} ` `    ``} ` `    ``return` `\$arr``; ` `} ` ` `  `// Driver code ` `\$arr` `= ``array``(4, 5, 2, 1, 7, 6); ` `\$n` `= sizeof(``\$arr``); ` ` `  `// Replace the elements ` `// with the smaller element ` `// on its left side ` `\$arr1` `= ReplaceElements(``\$arr``, ``\$n``); ` ` `  `// Print the modified array ` `for` `(``\$i` `= 0; ``\$i` `< ``\$n``; ++``\$i``) ` `    ``echo` `\$arr1``[``\$i``] . ``" "``; ` ` `  `// This code is contributed  ` `// by Akanksha Rai ` `?> `

Output:

```-1 4 4 2 1 1
```

Time Complexity: O(N)

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :
Practice Tags :

1

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.