Znalezienie duplikatów w liście

Znalezienie duplikatów w liście
PL
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 2 lata
  • Postów:45
0

Jak znaleźć duplikaty w liście integerów? Przykładowa lista - {10,100,23,44,10,23,4,10}. Myślę o iterowaniu po kolei zaczynając od pierwszego - sprawdzając czy są powtórzenia danej liczby. Macie lepszy pomysł?

MF
  • Rejestracja:około 6 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Kraków
  • Postów:58
1

Możesz to zrobić szybko/ładnie używając streamów i metody frequency z Collections. W prawdzie złożoność będzie O(n2), ale taką samą miałbyś dla każdego elementu iterując po wszystkich innych (jak napisałes)

Kopiuj
List<Integer> numbers = Arrays.asList(new Integer[]{10,100,23,44,10,23,4,10});
        numbers.stream().filter(i -> Collections.frequency(numbers, i) >1)
                .collect(Collectors.toSet()).forEach(System.out::println);

Wynik powyższego streama:

23
10


AF
  • Rejestracja:prawie 18 lat
  • Ostatnio:2 miesiące
1

Posortuj lub użyj seta.

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
2

stream + grouping by + function.identity + collections.counting


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.