Максимизируйте количество уникальных элементов в массиве, изменив элементы на отрицательные

Опубликовано: 20 Сентября, 2022

Дан массив arr , содержащий N целых чисел. задача состоит в том, чтобы найти максимальное количество уникальных элементов в массиве, если каждый элемент в массиве можно изменить на его отрицательное значение, т.е. X можно изменить на -X в массиве.

Пример:

Input: arr[] = {-1, 3, 2, 3, 2}
Output: 5
Explanation: Change one 2 to -2 and another 3 to -3 to get the arr[]={-1, 3, 2, -3, -2}, having 5 unique values.

Input: arr[] = {1, 2, 2, 2, 3, 3, 3}
Output: 5

Подход: В этой задаче можно использовать набор. Выполните следующие шаги, чтобы решить:

  • Пройдите массив от i=0 до i<N и для каждого элемента arr[i] :
    • Проверьте, присутствует ли в наборе abs(arr[i]) или нет.
    • Если его нет, то вставьте его в набор.
    • В противном случае вставьте исходное значение в набор.
  • Поскольку набор содержит только исходные значения, ответом будет размер набора.

Ниже приведена реализация вышеуказанного подхода:


Временная сложность: O(N)
Вспомогательное пространство: O(N)