Рубрики
Без рубрики

День 12 Найти все номера, исчезанные в массиве

Это заявление о проблеме является частью обучения LeetCode, введение в структуру данных в структурах данных с … Tagged с Python, обсуждение, Challenge.

Это заявление о проблеме является частью знакомства о обучении LeetCode для знакомства со структурами данных с массивами-101.

Постановка задачи

Учитывая массив целых чисел, где 1 ≤ A [I] ≤ n массива), некоторые элементы появляются дважды, а другие появляются один раз.

Найдите все элементы [1, N] включения, которые не отображаются в этом массиве.

Не могли бы вы сделать это без дополнительного пространства и в O (n) время выполнения? Вы можете предположить, что возвращенный список не считается дополнительным пространством.

Пример 1.
Input:
[4,3,2,7,8,2,3,1]

Output:
[5,6]
Подход решения
  1. Диапазон элементов и значение элементов одинаково.
  2. Список может иметь дубликаты также. Таким образом, преобразование списка для установки означало бы удаление дубликатов и имеющих только уникальные элементы.
  3. Вычитание множества, содержащего числа между диапазоном [1, n] и набором, образованным путем удаления дубликатов. Вернет недостающие элементы.
  4. Преобразуйте набор в список.
class Solution:
    def findDisappearedNumbers(self, nums: List[int]) -> List[int]:
        return list(set([x for x in range(1, len(nums)+1)]) - set(nums))
Учащиеся
  1. Сложность времени – 0 (n)
  2. Мы все еще используем дополнительное пространство, инициализация совершенно нового списка с элементами между [1, n].
  3. Нужно выяснить способ оптимизации пространства.

Оригинал: “https://dev.to/mridubhatnagar/day-12-find-all-the-numbers-disappeared-in-the-array-4l3m”