LeetCode: Plus One
----- Условие ----- Дано целое число, представленное массивом цифр, где самый старший разряд имеет индекс 0. Необходимо добавить числу единицу и вернуть получившийся результат также в виде массива цифр.
----- Решение ----- Необходимо пройтись по массиву, начиная с конца. Если цифра в разряде равна 9, то записать на это место 0 и продолжить цикл, иначе увеличить цифру на один и сразу вернуть результат. То есть, простое правило сложения с увеличением старшего разряда.
Если мы прошлись по всем разрядам, но так и не вышли из функции, то значит, что у нас есть еще единица “в уме” для нового старшего разряда. Записываем в начало массива 1 и возвращаем ответ.
Сложность алгоритма по времени O(n), где n - количество цифр, сложность по памяти O(1).
----- Код ----- /** * @param {number[]} digits * @return {number[]} */ const plusOne = function(digits) { for (let i = digits.length - 1; i >= 0; i–) { if (digits[i] === 9) { digits[i] = 0; } else { digits[i] += 1; return digits; } }
digits.unshift(1);
return digits; };