Task Livecoding Find First Unique Element

1. Найти первый неповторяющийся элемент в массиве #

public static void main(String[] args) {
        int[] nums = {4, 5, 1, 2, 0, 4, 5, 2};
Спойлеры к решению
Подсказки
  • Можно использовать LinkedHashMap, так как он сохраняет порядок вставки элементов и позволяет эффективно отслеживать количество вхождений.
  • Перебираем массив и заносим элементы в Map, увеличивая счетчик повторений.
  • Затем снова проходим по массиву и находим первый элемент с count == 1.
Решение
import java.util.LinkedHashMap;
import java.util.Map;

public class FirstUniqueElement {
    public static int findFirstUnique(int[] nums) {
        Map<Integer, Integer> countMap = new LinkedHashMap<>();

        for (int num : nums) {
            countMap.put(num, countMap.getOrDefault(num, 0) + 1);
        }

        for (int num : nums) {
            if (countMap.get(num) == 1) {
                return num;
            }
        }

        return -1; // Если уникального элемента нет
    }

    public static void main(String[] args) {
        int[] nums = {4, 5, 1, 2, 0, 4, 5, 2};
        System.out.println(findFirstUnique(nums)); // 1
    }
}

Вывод:

1

Метод работает за O(n), так как мы дважды проходим по массиву. ✅