Plus One
https://leetcode.com/problems/plus-one | Easy |
Условие
Дан массив цифр, представляющий неотрицательное целое число, где каждая цифра находится в отдельной ячейке. Нужно прибавить 1 к числу и вернуть результат в виде нового массива.
Примеры
Input:
digits = [1, 2, 3]Output:
[1, 2, 4]Explanation:
Число 123 + 1 = 124.
Input:
digits = [4, 3, 2, 1]Output:
[4, 3, 2, 2]Explanation:
Число 4321 + 1 = 4322.
Input:
digits = [9]Output:
[1, 0]Explanation:
Число 9 + 1 = 10.
Решение
fun plusOne(digits: IntArray): IntArray {
// Проходим массив справа налево, начиная с последней цифры
for (i in digits.size - 1 downTo 0) {
// Если текущая цифра меньше 9, просто увеличиваем её на 1 и возвращаем результат
if (digits[i] < 9) {
digits[i]++
return digits
}
// Если цифра 9, то превращаем её в 0 и продолжаем цикл
digits[i] = 0
}
// Если все цифры были 9, то требуется дополнительный разряд
val result = IntArray(digits.size + 1)
result[0] = 1 // Устанавливаем первый разряд в 1, так как 999 + 1 = 1000
return result
}
Временная сложность
O(n), где n — количество цифр в массиве.
Пространственная сложность
O(1), если не учитывать результат, или O(n) в случае, когда требуется добавление разряда.