2021/01/22 每日一題 數(shù)組形式的整數(shù)加法

LeetCode上數(shù)組形式的整數(shù)加法,簡單難度,記錄下解題思路

一開始以為是簡單難度又可以重拳出擊了,寫了下面的代碼

var addToArrayForm = function(A, K) {
  // 將A數(shù)組轉(zhuǎn)換成數(shù)字 
  let num = Number(A.join(''))
  // 數(shù)字相加之后再轉(zhuǎn)換成字符串
  let sum = num + K + ''
  let res = []
  // 將字符串每個值推入數(shù)組
  for(let i=0; i<sum.length; i++) {
      res.push(sum[i])
  }
  // 返回結(jié)果
  return res
};

這樣來說對于小一點的數(shù)據(jù)沒什么問題,但是忽略了JavaScript中數(shù)字的范圍,最大可存儲2的53次方的數(shù)字,即9007199254740992,超過的就不會顯示了


修改下程序,最后改成從A和K的末尾相加,取相加的個位數(shù)放入數(shù)組

var addToArrayForm = function(A, K) {
  // 記錄下A數(shù)組的長度
  let len = A.length - 1
  let res = []
  // 每次取A的最后一位和K相加
  // 結(jié)束的標準是K計算結(jié)束,或者A到頭
  while (len >= 0 || K) {
     // 如果當(dāng)前A[len]存在
     if(A[len]) {
      // 就相加  
      K = K + A[len]
     }
     // 之后取個位數(shù)添加到數(shù)組,unshift是添加到數(shù)組開頭
     res.unshift(K % 10)
     // 之后更新K是去除個位數(shù)后剩余的數(shù),如果這個數(shù)不為0
     // 那就是K是個2位數(shù)以上的數(shù)字
     if(Math.floor(K /10)) {
      // 保存K當(dāng)前的十位以上的數(shù)
      K = Math.floor(K /10)
     } else {
      // 如果是個位數(shù),那就是計算結(jié)束了,跳出循環(huán)  
      K = 0  
     }
     // 換下一位
     len--
  }
  return res
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容