Назад к задачам
Junior — Senior
13

Однопроходный фильтр последовательности с исключением последних N элементов

Компании, где спрашивали:

PyrusPyrus
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Реализуйте функцию FilterLast, которая возвращает все элементы исходного потока, за исключением последних N элементов. При этом исходный поток нельзя обходить более одного раза и нельзя сохранять его полностью в памяти, так как его длина заранее неизвестна (вызов source.Count() потребует полного перечисления). Требования к решению:

  • использовать одно‑проходный потоковый алгоритм;
  • значение N значительно меньше длины последовательности;
  • допускается дополнительная память лишь для небольшого количества элементов (буфер размером N).
IEnumerable<T> FilterLast<T>(IEnumerable<T> source, Int32 skipCount)