989. 数组形式的整数加法

leetCode链表
/**
 * @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;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
 * @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;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
更新时间: 2022-03-25 17:04