数组形式的整数加法

解法一

  1. 解题思路:参考(2:两数相加)

  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;
    };
    

解法二

  1. 解题思路:

    • 直接将 k 与 num 的最后一位数字相加,然后计算出 「进位数字」 和 「当前数字」;
    • 此后计算第 i 位的 num[i] 和 ki 的和,再计算出「进位数字」 和 「当前数字」;
    • 直到循环结束,返回 结果数组;
  2. 代码实现:

    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();
    };
    
打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 数组形式的整数加法
  2. 2. 解法一
  3. 3. 解法二