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