Задача «Первое пропущенное положительное число» в LeetCode требует найти первое пропущенное положительное целое число в массиве. Вот несколько способов решения этой проблемы:
-
Сортировка. Один из подходов — отсортировать массив в порядке возрастания, а затем перебрать отсортированный массив, чтобы найти первое пропущенное положительное целое число. Временная сложность этого метода равна O(n log n), где n — длина массива.
-
HashSet: Другой подход — использовать HashSet для хранения всех положительных целых чисел в массиве. Затем выполните итерацию от 1 и проверьте, существует ли каждое число в HashSet. Как только вы найдете первое недостающее положительное целое число, верните его. Временная сложность этого метода равна O(n), где n — длина массива.
-
Сопоставление индексов. Эту проблему также можно решить с помощью сопоставления индексов. Выполните итерацию по массиву и для каждого положительного числа поменяйте его на правильную позицию в массиве (например, поменяйте местами 3 на индекс 2). После первого прохода пройдитесь по измененному массиву и найдите первый индекс, значение которого не соответствует его позиции (например, индекс 2 должен иметь значение 3, но это не так). Временная сложность этого метода равна O(n), где n — длина массива.
-
Битовая манипуляция: если длина массива не слишком велика, вы можете использовать подход с битовой манипуляцией. Создайте набор битов размера n+1 и установите соответствующий бит для каждого положительного числа в массиве. Наконец, выполните итерацию по набору битов, начиная с 1, и найдите первый неустановленный бит, который представляет первое пропущенное положительное целое число. Временная сложность этого метода равна O(n), где n — длина массива.