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长度大于数组