解法一:高精度加法
先相加求和,再处理进位的问题。
import java.util.*;
class Solution {
public List<Integer> addToArrayForm(int[] A, int K) {
List<Integer> ans = new ArrayList<>();
for (int i = A.length - 1; i >= 0; --i) {
ans.add(A[i]);
}
// 求和
for (int i = 0; K > 0; ++i, K /= 10) {
if (i < ans.size()) {
ans.set(i, ans.get(i) + K % 10);
} else {
ans.add(K % 10);
}
}
// 处理进位
for (int i = 0; i < ans.size(); ++i) {
if (ans.get(i) >= 10) {
int x = ans.get(i);
ans.set(i, x % 10);
if (i == ans.size() - 1) {
ans.add(x / 10);
} else {
ans.set(i + 1, ans.get(i + 1) + x / 10);
}
}
}
Collections.reverse(ans);
return ans;
}
}