• Задача
  • Решение
  • Обсуждение

FilterInPlace: отбор без аллокации

Аня просит не аллоцировать новый массив при фильтрации импорта. Реализуйте filterInPlace: отберите элементы, для которых keep истинно, правкой на месте (nums[:0] + append). Результат корректен, даже если проходят все или не проходит ни один элемент.

GolangРешение
func filterInPlace(nums []int, keep func(int) bool) []int {
	out := nums[:0]
	for _, n := range nums {
		if keep(n) {
			out = append(out, n)
		}
	}
	return out
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

00:00:00
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки