数组形式的整数加法
解法一
-
解题思路:参考(2:两数相加)
-
代码实现:
var addToArrayForm = function (num, k) { let sum = []; let n = num.length - 1; let add = 0; while (n >= 0 || k) { let u1 = n >= 0 ? num[n--] : 0; let u2 = k % 10; k = Math.floor(k / 10) sum.unshift((add + u1 + u2) % 10); add = u1 + u2 + add > 9 ? 1 : 0; } if (add === 1) sum.unshift(1); return sum; };
解法二
-
解题思路:
- 直接将 k 与 num 的最后一位数字相加,然后计算出 「进位数字」 和 「当前数字」;
- 此后计算第 i 位的 num[i] 和 ki 的和,再计算出「进位数字」 和 「当前数字」;
- 直到循环结束,返回 结果数组;
-
代码实现:
var addToArrayForm = function (num, k) { const res = [] let i = num.length - 1; while (i >= 0 || k > 0) { (i >= 0) && (k += num[i--]); // 使用push,然后reverse反转,比unshift稍快 res.push(k % 10); k = parseInt(k / 10); } return res.reverse(); };
打赏作者
您的打赏是我前进的动力
微信
支付宝
371.两整数之和
上一篇
评论