Использование постоянного пространства
Подход 1.Использование указателя и цикла for
- Эта функция будет принимать массив в качестве аргумента
- Инициализировать переменную значением 0 (это наш указатель)
- Прокрутите массив и проверьте, является ли текущий элемент меньше нуля или нет
- Если да, сравните индекс этого элемента и значение переменной (шаг 2).
- Если они не равны, поменять местами элементы
- В противном случае увеличьте переменную на 1
4. Вернуть массив
Временная сложность:O(n)
Пространственная сложность:O(1)
Подход 2. Использование двух указателей
- Эта функция будет принимать массив в качестве аргумента
- Создайте две переменные low и high с индексом 0 и length(array) - 1
- Итерация массива при условии низкий ‹ высокий
- Если число в нижнеминдексе меньше 0- Увеличить минимальное значение на 1
- Если число в старшем индексе больше 0 – уменьшите максимальное значение на 1.
- И если числа в нижнем индексе положительны, а в верхнем отрицательны - поменять местами
- Вернуть массив
Временная сложность:O(n)
Пространственная сложность:O(1)
Также читайте,