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