解法一:高精度加法

先相加求和,再处理进位的问题。

  1. import java.util.*;
  2. class Solution {
  3. public List<Integer> addToArrayForm(int[] A, int K) {
  4. List<Integer> ans = new ArrayList<>();
  5. for (int i = A.length - 1; i >= 0; --i) {
  6. ans.add(A[i]);
  7. }
  8. // 求和
  9. for (int i = 0; K > 0; ++i, K /= 10) {
  10. if (i < ans.size()) {
  11. ans.set(i, ans.get(i) + K % 10);
  12. } else {
  13. ans.add(K % 10);
  14. }
  15. }
  16. // 处理进位
  17. for (int i = 0; i < ans.size(); ++i) {
  18. if (ans.get(i) >= 10) {
  19. int x = ans.get(i);
  20. ans.set(i, x % 10);
  21. if (i == ans.size() - 1) {
  22. ans.add(x / 10);
  23. } else {
  24. ans.set(i + 1, ans.get(i + 1) + x / 10);
  25. }
  26. }
  27. }
  28. Collections.reverse(ans);
  29. return ans;
  30. }
  31. }