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

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
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容