Skip to Content

Distinct Numbers

Método 1 - Ordenamiento

Ordenamos el arreglo de números. Recorremos el arreglo e incrementamos la respuesta por cada número distinto. Los números distintos se pueden hallar si el número actual no es igual al número anterior del arreglo.

Implementación

Complejidad temporal: O(NlogN)\mathcal{O}(N\log{N})

#include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; vector<int> arr(N); for (int i = 0; i < N; i++) cin >> arr[i]; sort(arr.begin(), arr.end()); int ans = 1; for (int i = 1; i < N; i++) { /* * si el número actual es distinto del anterior * es un número distinto, así que sumamos 1 a la respuesta */ ans += (arr[i] != arr[i - 1]); } cout << ans << endl; return 0; }
import java.io.*; import java.util.*; public class DistinctNumbers { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); StringTokenizer st = new StringTokenizer(br.readLine()); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = Integer.parseInt(st.nextToken()); } Arrays.sort(arr); int ans = 1; for (int i = 1; i < n; i++) { /* * si el número actual es distinto del anterior * es un número distinto, así que sumamos 1 a la respuesta */ if (arr[i] != arr[i - 1]) { ans++; } } System.out.println(ans); } }
n = int(input()) # creamos una lista ordenada de los números numbers = sorted(map(int, input().split())) ans = 1 for i in range(1, n): # si el número actual es distinto del anterior # es un número distinto, así que sumamos 1 a la respuesta if numbers[i] != numbers[i - 1]: ans += 1 print(ans)

Método 2 - Conjuntos

Véase este módulo.