Убрать из слайса все нули на месте, без выделения нового слайса.
func RemoveZeros(s []int) []int
Требования
- Возвращается слайс без нулей, порядок остальных элементов сохраняется.
- Результат использует тот же массив, что и
s: res — это s[:k].
Ни одной аллокации.
- O(n) по времени, один проход.
nil, пустой слайс, слайс из одних нулей — пустой результат без паники.
Пример
s := []int{0, 1, 0, 3, 12, 0}
s = RemoveZeros(s) // [1 3 12], тот же массив
Устно: почему функция возвращает слайс, а не просто меняет s? Что нужно
сделать с хвостом s[k:], если вместо int — указатели?
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.