Это заявление о проблеме является частью знакомства о обучении LeetCode для знакомства со структурами данных с массивами-101.
Постановка задачи
Учитывая массив целых чисел, где 1 ≤ A [I] ≤ n массива), некоторые элементы появляются дважды, а другие появляются один раз.
Найдите все элементы [1, N] включения, которые не отображаются в этом массиве.
Не могли бы вы сделать это без дополнительного пространства и в O (n) время выполнения? Вы можете предположить, что возвращенный список не считается дополнительным пространством.
Пример 1.
Input: [4,3,2,7,8,2,3,1] Output: [5,6]
Подход решения
- Диапазон элементов и значение элементов одинаково.
- Список может иметь дубликаты также. Таким образом, преобразование списка для установки означало бы удаление дубликатов и имеющих только уникальные элементы.
- Вычитание множества, содержащего числа между диапазоном [1, n] и набором, образованным путем удаления дубликатов. Вернет недостающие элементы.
- Преобразуйте набор в список.
class Solution: def findDisappearedNumbers(self, nums: List[int]) -> List[int]: return list(set([x for x in range(1, len(nums)+1)]) - set(nums))
Учащиеся
- Сложность времени – 0 (n)
- Мы все еще используем дополнительное пространство, инициализация совершенно нового списка с элементами между [1, n].
- Нужно выяснить способ оптимизации пространства.
Оригинал: “https://dev.to/mridubhatnagar/day-12-find-all-the-numbers-disappeared-in-the-array-4l3m”