Отсортируйте по возрастанию только неотрицательные числа слайса (ноль —
тоже неотрицательный). Отрицательные числа остаются на своих позициях, а
неотрицательные занимают оставшиеся позиции в отсортированном порядке.
Сортировка — на месте, в переданном слайсе.
// SortNonNegative сортирует неотрицательные элементы nums на месте,
// не двигая отрицательные.
func SortNonNegative(nums []int)
Примеры
[-2, 18, -8, 4, 2] → [-2, 2, -8, 4, 18]
[3, -1, 0, -1, 2, 1] → [0, -1, 1, -1, 2, 3]
[-5, -3] → [-5, -3]
Ограничения
0 ≤ len(nums) ≤ 10⁶, числа — любые int.
- Ожидается O(n log n). Устно: какая у вашего решения сложность по времени и
по памяти? Можно ли обойтись O(1) дополнительной памяти?
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.