Это мое решение проблемы 66 на Leet Code.

Дан непустой массив цифр, представляющий неотрицательное целое число плюс единица к целому числу.

Цифры хранятся таким образом, что наиболее значимая цифра находится в начале списка, а каждый элемент в массиве содержит одну цифру.

Вы можете предположить, что целое число не содержит нуля в начале, кроме самого числа 0.

Пример 1:

Input: [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.

Пример 2:

Input: [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.

Сначала выясняем, сколько элементов в массиве.

Наша цель - прибавить 1 к последней цифре. Итак, мы проходим через массив в обратном направлении, используя цикл for. Давайте назовем переменную нашего цикла for currentIndex.

Каждый элемент в массиве должен состоять из одной цифры. Итак, нам нужно увидеть, меньше ли цифра 9. Если цифра в currentIndex меньше 9, добавьте (приращение) 1, а затем верните массив.

Цель состоит в том, чтобы вернуть цифры, увеличенные на единицу. Если цифра в currentIndex не меньше 9, измените число на ноль.

Как и в обычной математической задаче, мы меняем 9 на 0, а затем переносим единицу на следующую цифру. Это означает, что мы снова проходим цикл for и проверяем следующее число. Если следующее число меньше 9, мы просто добавим 1 и вернем весь массив.

Что, если каждое число в массиве равно 9? Это наш крайний случай. Если каждое число в массиве равно 9, мы меняем каждое число на ноль и помещаем их в новый массив с пространством для еще одного элемента.

Затем мы меняем первый элемент на 1. Вот как мы его несем.

Наконец, мы возвращаем новый массив.

Давайте посмотрим на это в действии на первом примере массива выше:

Сначала мы выясняем, сколько элементов находится в массиве, и сохраняем это значение в переменной с именем arrayLength.

Затем мы входим в цикл for, двигаясь назад. Итак, мы начинаем с индекса 2.

Теперь мы спрашиваем, меньше ли число в currentIndex 9. Это так. Число в текущем индексе - 3.

Затем мы добавляем единицу к числу в currentIndex, а затем возвращаем массив. Теперь массив цифр [1, 2, 4].

Давайте посмотрим, как это работает в нашем пограничном случае с массивом [9,9]. Мы хотим вернуть array [1, 0, 0].

Сначала мы обнаруживаем, что массив состоит из 2 элементов, и сохраняем значение в нашей переменной arrayLength.

Теперь мы используем цикл for для обхода массива в обратном направлении, начиная с индекса 1.

Затем мы проверяем, меньше ли цифра в currentIndex 9. Это не так. поэтому мы меняем цифру на 0.

Мы снова проходим цикл for с индексом 0.

Число в currentIndex не меньше 9. Поэтому мы меняем его на ноль.

Мы достигли конца нашего цикла for. Теперь создаем новый массив с числами из цифр и добавляем место для еще одного элемента.

Затем мы переносим единицу, изменяя первую цифру в новом массиве на 1. Затем мы возвращаем новый массив, который равен [1, 0, 0]

Вы можете найти исходный код с примечаниями в моем профиле на github ..