Saturday, September 21, 2024
Google search engine
HomeData Modelling & AIReplace repeating elements with greater that greatest values

Replace repeating elements with greater that greatest values

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
Explanation: 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. 

Implementation:

C++




// 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 code
int 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




// 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 code
public 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


Python3




# 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 code
if __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#




// 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 code
public 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


Javascript




<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>


Output

1 3 4 5 6 

Time complexity: O(n) where n is the number of elements in the given array
Auxiliary space: O(n) for storing elements in the HashSet.

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments