НовоеAI-конструктор резюме: правишь прямо на листе A4, а нейросеть подсказывает, что усилитьКонструктор резюме на листе A4Попробовать
JobPath
Начать бесплатно

FrontendSeniorЗадача на код

Создать функцию, которая принимает массив чисел и возвращает строку с диапазонами последовательных чисел

Встречался на собеседовании

Ответ

Что хотят услышать интервьюеры

Интервьюеры ожидают увидеть ясное понимание работы с массивами и манипуляциями с ними. Важно продемонстрировать способность разбивать массив на последовательные диапазоны, а также писать чистый и читаемый код. Ожидается, что кандидат учтет крайние случаи, такие как пустой массив или массив с единственным элементом, и предложит эффективное решение.

def summarize_ranges(numbers):
    # Проверяем, является ли массив пустым
    if not numbers:
        return ""
    
    # Сортируем числа и убираем дубликаты
    numbers = sorted(set(numbers))
    ranges = []  # Список для хранения диапазонов
    start = numbers[0]  # Начало первого диапазона

    for i in range(1, len(numbers)):
        # Проверяем, является ли текущее число последовательным
        if numbers[i] != numbers[i - 1] + 1:
            # Если не последовательное, добавляем диапазон
            if start == numbers[i - 1]:
                ranges.append(str(start))
            else:
                ranges.append(f"{start}->{numbers[i - 1]}")
            start = numbers[i]  # Обновляем начало диапазона

    # Добавляем последний диапазон
    if start == numbers[-1]:
        ranges.append(str(start))
    else:
        ranges.append(f"{start}->{numbers[-1]}")

    return ", ".join(ranges)

# Примеры тестирования
print(summarize_ranges([0, 1, 2, 4, 5, 7]))  # "0->2, 4->5, 7"
print(summarize_ranges([1, 2, 3, 6, 7, 8]))  # "1->3, 6->8"
print(summarize_ranges([1]))  # "1"
print(summarize_ranges([]))  # ""

Анализ кода:

  1. Проверка пустого массива: Если массив пустой, возвращаем пустую строку.
  2. Сортировка и удаление дубликатов: Это гарантирует, что диапазоны будут правильно определены.
  3. Итерация по массиву: Для каждого элемента проверяем, если он последовательный относительно предыдущего.
  4. Добавление диапазонов: Когда находим разрыв, добавляем текущий диапазон в список.
  5. Формирование результата: Соединяем диапазоны в строку и возвращаем.

Что могут спросить дальше

  • Показать пример вывода для других наборов данных.
  • Объяснить алгоритм более подробно.
  • Перейти к следующему шагу и обсудить улучшения.
  • Обсудить возможные крайние случаи.
Ответ помог?
Тренироваться бесплатно

Связаться с поддержкой

Выбери, где удобнее написать