Replace repeating elements with greater that greatest values - GeeksforGeeks

25 May, 2021
Given an integer array, if an integer is repeating then replace it with a number greater than that number that has not been inserted yet in the array.Examples:  
Input : arr = {1, 3, 4, 5, 3}
Output : 1 3 4 5 6
Here 3 is repeating so it is replaced with 6

Input : arr = {1, 3, 4, 4, 5, 3}
Output : 1 3 4 6 5 7
We need to replace repeating numbers with a number that does not appear in the array and is one greater than the largest present in the array.Source: Paytm Interview Experience (Backend Developer).Calculate the maximum element in the array and replace the repeated elements with the maxx+1 and update the maxx element as visited. In the implementation, basic concept of hashing is used.  
C++
Java
Python3
C#
Javascript
// CPP program to replace repeating elements// with greater than the greatest.#include <bits/stdc++.h>using namespace std; void replaceElements(int arr[], int n){    // Maximum element in an array    int maxx = *max_element(arr, arr+n);     unordered_set<int> s;     for (int i = 0; i < n; i++) {                  // check whether the element is        // repeated or not        if (s.find(arr[i]) == s.end())            s.insert(arr[i]);         else {             // update the repeated element with the            // maxx element            arr[i] = maxx + 1;             maxx++; // update the max             // mark the maximum element as visited            s.insert(maxx);        }    }} // Driver codeint main(){    int arr[] = { 1, 3, 4, 5, 3 };    int n = sizeof(arr)/sizeof(arr[0]);    replaceElements(arr, n);    for (int i = 0; i < n; i++)        cout << arr[i] << " ";    return 0;}
// Java  program to replace repeating elements// with greater than the greatest.import java.util.*;class Solution{    //returns the maximum element    static int max_element(int arr[])    {        int max=arr[0];        for(int i=1;i<arr.length;i++)        {            if(max<arr[i])            max=arr[i];        }        return max;    }     static void replaceElements(int arr[], int n){    // Maximum element in an array    int maxx = max_element(arr);      Vector<Integer> s=new Vector<Integer>();      for (int i = 0; i < n; i++) {                   // check whether the element is        // repeated or not        if (!s.contains(arr[i]))            s.add(arr[i]);          else {              // update the repeated element with the            // maxx element            arr[i] = maxx + 1;              maxx++; // update the max              // mark the maximum element as visited            s.add(maxx);        }    }} // Driver codepublic static void main(String args[]){    int arr[] = { 1, 3, 4, 5, 3 };    int n = arr.length;    replaceElements(arr, n);    for (int i = 0; i < n; i++)        System.out.print( arr[i] + " ");     }}//contributed by Arnab Kundu
# Python 3 program to replace repeating# elements with greater than the greatest. def replaceElements( arr, n):     # Maximum element in an array    maxx = max(arr)     s = []     for i in range (n) :                 # check whether the element is        # repeated or not        if arr[i] not in s:            s.append(arr[i])         else:             # update the repeated element            # with the maxx element            arr[i] = maxx + 1             maxx += 1 # update the max             # mark the maximum element            # as visited            s.append(maxx) # Driver codeif __name__ =="__main__":     arr = [ 1, 3, 4, 5, 3 ]    n = len(arr)    replaceElements(arr, n)    for i in range( n):        print (arr[i], end = " ") # This code is contributed by ita_c
// C# program to replace repeating elements// with greater than the greatest.using System;using System.Collections.Generic; class GFG{    //returns the maximum element    static int max_element(int []arr)    {        int max = arr[0];        for(int i = 1; i < arr.Length; i++)        {            if(max < arr[i])            max = arr[i];        }        return max;    }     static void replaceElements(int []arr, int n){    // Maximum element in an array    int maxx = max_element(arr);     List<int> s = new List<int>();     for (int i = 0; i < n; i++)    {                     // check whether the element is        // repeated or not        if (!s.Contains(arr[i]))            s.Add(arr[i]);         else        {             // update the repeated element with the            // maxx element            arr[i] = maxx + 1;             maxx++; // update the max             // mark the maximum element as visited            s.Add(maxx);        }    }} // Driver codepublic static void Main(){    int []arr = { 1, 3, 4, 5, 3 };    int n = arr.Length;    replaceElements(arr, n);    for (int i = 0; i < n; i++)        Console.Write( arr[i] + " ");}} // This code is contributed by PrinciRaj1992
<script> // JavaScript  program to replace repeating elements// with greater than the greatest.         //returns the maximum element    function max_element(arr)    {        let max=arr[0];        for(let i=1;i<arr.length;i++)        {            if(max<arr[i])                max=arr[i];        }        return max;    }         function replaceElements(arr,n)    {        // Maximum element in an array    let maxx = max_element(arr);        let s=[];        for (let i = 0; i < n; i++) {                     // check whether the element is        // repeated or not        if (!s.includes(arr[i]))            s.push(arr[i]);            else {                // update the repeated element with the            // maxx element            arr[i] = maxx + 1;                maxx++; // update the max                // mark the maximum element as visited            s.push(maxx);        }    }    }         // Driver code    let arr=[1, 3, 4, 5, 3];    let n = arr.length;    replaceElements(arr, n);    for (let i = 0; i < n; i++)        document.write( arr[i] + " ");      // This code is contributed by rag2127 </script>
1 3 4 5 6
 
andrew1234
ukasp
princiraj1992
rag2127
cpp-unordered_set
Paytm
Technical Scripter 2018
Arrays
Hash
Paytm
Arrays
Hash
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Introduction to Arrays
Multidimensional Arrays in Java
Linked List vs Array
Python | Using 2D arrays/lists the right way
Given an array of size n and a number k, find all elements that appear more than n/k times
Internal Working of HashMap in Java
Hashing | Set 1 (Introduction)
Count pairs with given sum
Hashing | Set 3 (Open Addressing)
Hashing | Set 2 (Separate Chaining)