https://leetcode.com/problems/add-to-array-form-of-integer | Easy |
---|
Дано целое число k
и массив num
, представляющий собой цифры целого числа в порядке от старшего разряда к младшему. Требуется вернуть массив, представляющий сумму числа, составленного из массива num
, и числа k
.
Input:
num = [1,2,0,0], k = 34Output:
[1,2,3,4]Explanation:
Число, составленное из массива num, равно 1200. При добавлении 34 получается 1234. Массив результата — [1,2,3,4].
Input:
num = [2,7,4], k = 181Output:
[4,5,5]Explanation:
Число, составленное из массива num, равно 274. При добавлении 181 получается 455. Массив результата — [4,5,5].
Input:
num = [2,1,5], k = 806Output:
[1,0,2,1]Explanation:
Число, составленное из массива num, равно 215. При добавлении 806 получается 1021. Массив результата — [1,0,2,1].
fun addToArrayForm(num: IntArray, k: Int): List<Int> {
val result = mutableListOf<Int>()
var carry = k
var i = num.size - 1
// Проходим по массиву num с конца к началу
while (i >= 0 || carry > 0) {
if (i >= 0) {
carry += num[i] // Добавляем текущую цифру из num к carry
i--
}
result.add(carry % 10) // Добавляем младшую цифру carry к результату
carry /= 10 // Обновляем carry, удаляя младшую цифру
}
result.reverse() // Переворачиваем результат, чтобы получить правильный порядок цифр
return result
}
O(max(n, log k)), где n — длина массива num
, а log k — количество цифр в числе k
. Мы проходим по массиву num
и числу k
одновременно, выполняя операции сложения и переноса.
O(max(n, log k)), поскольку результат может содержать до max(n, log k) цифр, включая возможный дополнительный разряд при переносе.