Использование постоянного пространства

Подход 1.Использование указателя и цикла for

  1. Эта функция будет принимать массив в качестве аргумента
  2. Инициализировать переменную значением 0 (это наш указатель)
  3. Прокрутите массив и проверьте, является ли текущий элемент меньше нуля или нет
  • Если да, сравните индекс этого элемента и значение переменной (шаг 2).
  • Если они не равны, поменять местами элементы
  • В противном случае увеличьте переменную на 1

4. Вернуть массив

Временная сложность:O(n)

Пространственная сложность:O(1)

Подход 2. Использование двух указателей

  1. Эта функция будет принимать массив в качестве аргумента
  2. Создайте две переменные low и high с индексом 0 и length(array) - 1
  3. Итерация массива при условии низкий ‹ высокий
  4. Если число в нижнеминдексе меньше 0- Увеличить минимальное значение на 1
  5. Если число в старшем индексе больше 0 – уменьшите максимальное значение на 1.
  6. И если числа в нижнем индексе положительны, а в верхнем отрицательны - поменять местами
  7. Вернуть массив

Временная сложность:O(n)

Пространственная сложность:O(1)

Также читайте,