Программа курса:
Разбор задачи: Плюс один
Предложенный нами код решения:
def plus_one(digits):
"""
Увеличивает большое число, представленное массивом цифр, на единицу.
Возвращает результат в виде массива цифр.
"""
# Проходим по массиву с конца
for i in range(len(digits) - 1, -1, -1):
if digits[i] < 9:
digits[i] += 1
return digits
digits[i] = 0
# Если все цифры равны 9, например [9], [9,9], то нужно добавить 1 в начало
return [1] + digits
Функция plus_one(digits) увеличивает число, представленное массивом цифр, на единицу и возвращает результат в виде массива цифр.
Шаги решения:
- Проход по массиву с конца:
- Мы начинаем с последней цифры (самого младшего разряда), потому что увеличение на единицу обычно начинается с младшего разряда.
- Используется цикл
for i in range(len(digits) - 1, -1, -1), который идет от последнего элемента массива до первого. - Важно, что мы двигаемся в обратном порядке, так как в числе с увеличением на единицу чаще всего изменяется именно младший разряд (первый).
- Проверка текущей цифры:
- Для каждой цифры в массиве мы проверяем, меньше ли она 9:
if digits[i] < 9.- Если цифра меньше 9, мы просто увеличиваем её на 1 и сразу возвращаем результат:
digits[i] += 1иreturn digits. - Это оптимальный случай, когда не происходит переноса. Например, для числа
[1, 2, 3]результат будет[1, 2, 4].
- Если цифра меньше 9, мы просто увеличиваем её на 1 и сразу возвращаем результат:
- Для каждой цифры в массиве мы проверяем, меньше ли она 9:
- Обработка переноса:
- Если текущая цифра равна 9, она превращается в 0, и мы переходим к следующей более значимой цифре.
- Для этого:
digits[i] = 0.
- Дополнение 1 в начале массива:
- Если все цифры в массиве были 9, например, для числа
[9]или[9, 9], то в результате все цифры становятся 0, и нам нужно добавить 1 в начало массива, чтобы корректно отобразить перенос, как в примере:[1, 0]. - Это выполняется с помощью операции
return [1] + digits.
- Если все цифры в массиве были 9, например, для числа
Пример 1:
Вход: digits = [1, 2, 3]
Шаги:
- Цифра 3 увеличивается на 1, получаем
[1, 2, 4].
Выход:[1, 2, 4]
Пример 2:
Вход: digits = [9]
Шаги:
- Цифра 9 превращается в 0.
- Нужно добавить 1 в начало массива.
Выход:[1, 0]
Пример 3:
Вход: digits = [9, 9]
Шаги:
- Первая цифра 9 становится 0, вторая цифра 9 также становится 0.
- Добавляем 1 в начало.
Выход:[1, 0, 0]
Пример 4:
Вход: digits = [4, 3, 2, 1]
Шаги:
- Цифра 1 увеличивается на 1, получаем
[4, 3, 2, 2].
Выход:[4, 3, 2, 2]
Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии