对数组 A 倒序遍历,每轮遍历的时候加上 K 对 10 取的余数,将和判断是否大于 10 后加入 ret 数组中,并对 K 进行更新。
遍历完再对 K 做一个遍历直到 K = 0 为止。
例如:A = [1, 2, 3] K = 912 第一轮遍历: 3 + 2 = 5,此时 K = 91,ret = [5] 第二轮遍历: 2 + 1 = 3,此时 K = 9, ret = [3, 5] 第三轮遍历: 9 + 1 = 10,此时 K = 0 + 1 = 1, ret = [0, 3, 5] K = 1,还要再向 ret 中加入 1,ret = [1, 0, 3, 5]
时间复杂度:O($max{m,n}$),其中 m 是数组 A 的长度,n 是数字 K 的长度
空间复杂度:O($max{m,n}$)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
var addToArrayForm = function (A, K) { let ret = []; const n = A.length; for (let i = n - 1; i >= 0; --i) { let sum = A[i] + K % 10; K = Math.floor(K / 10); if (sum >= 10) { ret.unshift(sum % 10); K++; } else { ret.unshift(sum) } } for (; K > 0; K = Math.floor(K / 10)) { ret.unshift(K % 10) } return ret };