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 6Input : 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 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
// 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 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#
// 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> |
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.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] Read More to that Topic: geeksforgeeks.org/replace-repeating-elements-with-greater-that-greatest-values/ […]