Dada una array de N enteros, encuentre la diferencia entre la suma de números cuya frecuencia de todos los dígitos es igual y diferente. Por ejemplo, 8844, 1001, 56, 77, 34764673 son ejemplos de números donde todos los dígitos tienen la misma frecuencia. Del mismo modo, 545, 44199, 76672, 202 son ejemplos de números cuya frecuencia de dígitos no es la misma.
Ejemplos:
Entrada: a[] = {24, 787, 2442, 101, 1212}
Salida: 2790
(2442 + 24 + 1212) – (787 + 101) = 2790
Entrada: a[]= {12321, 786786, 110022, 47, 22895}
Salida: 861639
Enfoque: poligonal para cada elemento de la array. Mantenga un conteo de todos los dígitos en un mapa. Una vez que se recorren todos los dígitos en el elemento, verifique si el mapa contiene la misma frecuencia para todos los dígitos. Si contiene la misma frecuencia, agréguela a la misma; de lo contrario, agréguela a la diferencia. Después de que la array se haya recorrido por completo, devuelva la diferencia de ambos elementos.
A continuación se muestra la implementación del enfoque anterior:
CPP
// C++ Difference between the // summation of numbers // in which the frequency of // all digits are same and different #include <bits/stdc++.h> using namespace std; // Function that returns the difference int difference(int a[], int n) { // Stores the sum of same // and different frequency digits int same = 0; int diff = 0; // traverse in the array for (int i = 0; i < n; i++) { // duplicate of array element int num = a[i]; unordered_map<int, int> mp; // traverse for every digit while (num) { mp[num % 10]++; num = num / 10; } // iterator pointing to the // first element in the array auto it = mp.begin(); // count of the smallest digit int freqdigit = (*it).second; int flag = 0; // check if all digits have same frequency or not for (auto it = mp.begin(); it != mp.end(); it++) { if ((*it).second != freqdigit) { flag = 1; break; } } // add to diff if not same if (flag) diff += a[i]; else same += a[i]; } return same - diff; } // Driver Code int main() { int a[] = { 24, 787, 2442, 101, 1212 }; int n = sizeof(a) / sizeof(a[0]); cout << difference(a, n); return 0; }
Java
// Java Difference between the // summation of numbers // in which the frequency of // all digits are same and different import java.util.*; class GFG { // Function that returns the difference static int difference(int a[], int n) { // Stores the sum of same // and different frequency digits int same = 0; int diff = 0; // traverse in the array for (int i = 0; i < n; i++) { // duplicate of array element int num = a[i]; HashMap<Integer,Integer> mp = new HashMap<Integer,Integer>(); // traverse for every digit while (num > 0) { if(mp.containsKey(num % 10)) mp.put(num % 10, (mp.get(num % 10) + 1)); else mp.put(num % 10, 1); num = num / 10; } // iterator pointing to the // first element in the array Iterator<Map.Entry<Integer, Integer>> it = mp.entrySet().iterator(); // count of the smallest digit int freqdigit = it.next().getValue(); int flag = 0; // check if all digits have same frequency or not for (Map.Entry<Integer,Integer> its : mp.entrySet()) { if (its.getValue() != freqdigit) { flag = 1; break; } } // add to diff if not same if (flag == 1) diff += a[i]; else same += a[i]; } return same - diff; } // Driver Code public static void main(String[] args) { int a[] = { 24, 787, 2442, 101, 1212 }; int n = a.length; System.out.print(difference(a, n)); } } // This code is contributed by PrinciRaj1992
Python3
# Python3 Difference between the # summation of numbers # in which the frequency of # all digits are same and different # Function that returns the difference def difference(a, n): # Stores the sum of same # and different frequency digits same = 0 diff = 0 # traverse in the array for i in range(n): # duplicate of array element num = a[i] mp={} # traverse for every digit while (num): if num % 10 not in mp: mp[num % 10] = 0 mp[num % 10] += 1 num = num // 10 # iterator pointing to the # first element in the array it = list(mp.keys()) # count of the smallest digit freqdigit = mp[it[0]] flag = 0 # check if all digits have same frequency or not for it in mp: if mp[it] != freqdigit: flag = 1 break # add to diff if not same if (flag): diff += a[i] else: same += a[i] return same - diff # Driver Code a = [24, 787, 2442, 101, 1212] n = len(a) print(difference(a, n)) # This code is contributed by SHUBHAMSINGH10
2790
Publicación traducida automáticamente
Artículo escrito por vishal9619 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA