Разбор задачи: Недостающее число

Предложенный нами код решения:

def missing_number(nums):
    """
    Функция принимает массив nums, содержащий n уникальных чисел в диапазоне [0, n],
    и возвращает недостающее число в этом диапазоне.
    
    :param nums: массив чисел
    :return: недостающее число
    """
    # Находим сумму чисел от 0 до n (включительно)
    n = len(nums)
    expected_sum = n * (n + 1) // 2
    
    # Находим реальную сумму элементов в массиве nums
    actual_sum = sum(nums)
    
    # Недостающее число — это разница между ожидаемой и реальной суммой
    return expected_sum - actual_sum

Алгоритм решения

  1. Определение переменной n:
    • Массив nums содержит уникальные числа в диапазоне от 0 до n (включительно). Таким образом, длина массива (len(nums)) равна n. Важно заметить, что nums должно содержать n чисел (по одному для каждого из чисел от 0 до n, кроме одного недостающего).
  2. Вычисление ожидаемой суммы всех чисел от 0 до n:
    • Мы можем вычислить сумму всех чисел от 0 до n с помощью формулы для суммы арифметической прогрессии: Ожидаемая сумма = (n * (n + 1)) / 2
    • Эта формула используется для получения суммы всех чисел от 0 до n, без пропусков. Например, если n = 3, то сумма всех чисел от 0 до 3 будет равна 6 (0 + 1 + 2 + 3 = 6).
  3. Вычисление реальной суммы элементов массива:
    • Для вычисления фактической суммы элементов массива nums используется встроенная функция Python sum(nums), которая суммирует все элементы массива.
  4. Нахождение недостающего числа:
    • Поскольку в массиве nums отсутствует ровно одно число, то разница между ожидаемой суммой (expected_sum) и фактической суммой элементов массива (actual_sum) будет равна недостающему числу. То есть: Недостающее число = Ожидаемая сумма - Фактическая сумма
    • Например, если сумма всех чисел от 0 до 3 равна 6, а фактическая сумма чисел в массиве [3, 0, 1] равна 4 (3 + 0 + 1), то недостающее число будет равно 6 - 4 = 2.

Пример:

Предположим, что массив nums = [3, 0, 1].

  1. Длина массива n равна 3, так как в нем 3 числа.
  2. Ожидаемая сумма всех чисел от 0 до 3: Ожидаемая сумма = (3 * (3 + 1)) / 2 = 6
  3. Фактическая сумма элементов массива: Фактическая сумма = 3 + 0 + 1 = 4
  4. Недостающее число: Недостающее число = 6 - 4 = 2 Результат: 2.

 



Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии