Dada una array de enteros, si un entero se repite, reemplácelo con un número mayor que ese número que aún no se ha insertado en la array.
Ejemplos:
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
Necesitamos reemplazar los números repetidos con un número que no aparece en la array y es uno mayor que el mayor presente en la array.
Fuente : Paytm Interview Experience (desarrollador backend) .
Calcule el elemento máximo en la array y reemplace los elementos repetidos con maxx+1 y actualice el elemento maxx según lo visitado. En la implementación, se utiliza el concepto básico de hashing.
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>
Producción:
1 3 4 5 6
Publicación traducida automáticamente
Artículo escrito por Kushdeep_Mittal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA