Appearance
989. 数组形式的整数加法
js
/**
* @param {number[]} num
* @param {number} k
* @return {number[]}
*/
var addToArrayForm = function(num, k) {
// 进位
let carry = 0;
// 将k转换成数组
let arr = k.toString().split('');
// 两个数组进行末尾相加
let a = num.length - 1;
let b = arr.length - 1;
// 定义一个新数组
let result = []
while(a >= 0 || b >= 0) {
let num1 = a < 0 ? 0 : num[a];
let num2 = b < 0 ? 0 : arr[b];
let sum = Number(num1) + Number(num2) + carry;
carry = Math.floor(sum / 10);
result.unshift(sum % 10);
a--;
b--;
}
// 处理进位问题
if(carry) {
result.unshift(carry);
}
return result;
};
js
/**
* @param {number[]} num
* @param {number} k
* @return {number[]}
*/
var addToArrayForm = function(num, k) {
// 进位
let carry = 0;
// 以数组为基准进行相加
for(let i = num.length - 1; i >= 0; i--) {
let numk = k % 10;
let sum = num[i] + numk + carry;
carry = Math.floor(sum / 10);
num[i] = sum % 10;
k = Math.floor(k / 10);
}
// 如果k有剩余,那么将k直接拼接到数组前面
if(k !== 0) {
k+=carry;
return k.toString().split('').concat(num);
}
// 如果k没有剩余,判断有没有进位,有进位添加到前面
if (carry) num.unshift(carry);
// 返回数组
return num;
};