class Solution {
    public List<Integer> addToArrayForm(int[] A, int K) {
        // 初始化参数
        List<Integer> res = new ArrayList<Integer>();
        int n = A.length;

        // 1. 从后往前逐位相加
        for(int i = n - 1;i >= 0;i--){
            // 1.1 逐位相加
            int sum = A[i] + K % 10;         // 每次重置sum
            K /= 10;    
            // 1.2 处理两位相加 进位的情况
            if(sum >= 10){
                K++;                        // 进位到K的末尾
                sum -= 10;                  // 进位清掉
            }
            // 1.2 当前相加的结果 添加到结果集
            res.add(sum);
        }

        // 2. K的数字长度大于数组的数字长度
        for(;K > 0;K /= 10){                // 每次K左移一位
            res.add(K % 10);                // 添加到结果集
        }

        // 3. 将结果集翻转即是所求答案
        Collections.reverse(res);
        return res;
    }
}

对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。

给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。

思路就是按位相加,每次K往前移动一位就/10,取出来的位数是K%10找到末尾一位,最后的遍历加k%10针对k长度大于数组