看啥推荐读物
专栏名称: Taec0123
目录
相关文章推荐
今天看啥  ›  专栏  ›  Taec0123

2021/01/22 每日一题 数组形式的整数加法

Taec0123  · 简书  ·  · 2021-01-23 10:11

LeetCode上 数组形式的整数加法 ,简单难度,记录下解题思路

一开始以为是简单难度又可以重拳出击了,写了下面的代码

var addToArrayForm = function(A, K) {
  // 将A数组转换成数字 
  let num = Number(A.join(''))
  // 数字相加之后再转换成字符串
  let sum = num + K + ''
  let res = []
  // 将字符串每个值推入数组
  for(let i=0; i<sum.length; i++) {
      res.push(sum[i])
  }
  // 返回结果
  return res
};

这样来说对于小一点的数据没什么问题,但是忽略了 JavaScript中数字的范围 ,最大可存储2的53次方的数字,即9007199254740992,超过的就不会显示了


修改下程序,最后改成从A和K的末尾相加,取相加的个位数放入数组

var addToArrayForm = function(A, K) {
  // 记录下A数组的长度
  let len = A.length - 1
  let res = []
  // 每次取A的最后一位和K相加
  // 结束的标准是K计算结束,或者A到头
  while (len >= 0 || K) {
     // 如果当前A[len]存在
     if(A[len]) {
      // 就相加  
      K = K + A[len]
     }
     // 之后取个位数添加到数组,unshift是添加到数组开头
     res.unshift(K % 10)
     // 之后更新K是去除个位数后剩余的数,如果这个数不为0
     // 那就是K是个2位数以上的数字
     if(Math.floor(K /10)) {
      // 保存K当前的十位以上的数
      K = Math.floor(K /10)
     } else {
      // 如果是个位数,那就是计算结束了,跳出循环  
      K = 0  
     }
     // 换下一位
     len--
  }
  return res
};



原文地址:访问原文地址
快照地址: 访问文章快照