Генератор последовательного массива

Соберите возрастающую часть 0...n, затем добавьте значения от n−1 до 0. Для n = 0 результат содержит единственный ноль.

Короткий ответ

Что ответить на собеседовании

Соберите возрастающую часть 0...n, затем добавьте значения от n−1 до 0. Для n = 0 результат содержит единственный ноль.

Подробный разбор

Ответ с пояснениями

Условие

Реализуйте функцию, принимающую целое число n и возвращающую массив, в котором сначала перечислены значения от 0 до n включительно, а затем те же значения в обратном порядке от n‑1 до 0.

Ответ

Соберите возрастающую часть 0...n, затем добавьте значения от n−1 до 0. Для n = 0 результат содержит единственный ноль.

func sequence(upTo n: Int) -> [Int]? {
    guard n >= 0 else { return nil }
    var result = Array(0...n)
    if n > 0 {
        for value in stride(from: n - 1, through: 0, by: -1) {
            result.append(value)
        }
    }
    return result
}

Для n = 3 получается [0, 1, 2, 3, 2, 1, 0]. Вершина n не дублируется. Длина результата математически равна 2n + 1, время и память O(n); для огромного n нужно ограничить объём или возвращать ленивую последовательность вместо массива.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее