int size1 = list1.size(); int size2 = list2.size();
List<Integer> list = new ArrayList<>(); // 进位 int carry = 0; // 当前位 int now;
// 因为之前取链表时是逆序,所以现在顺序读取,逆序加入结果数组 for (int i = 0; i < Math.max(size1, size2); i++) { now = 0; if (i < size1) { now += list1.get(i); } if (i < size2) { now += list2.get(i); } now += carry; if (now >= 10) { now -= 10; carry = 1; }else { carry = 0; } list.add(now); }
// 多余的进位 if (carry != 0) { list.add(carry); }
ListNode result = new ListNode(list.get(0));
ListNode temp = result; for (int i = 1; i < list.size(); i++) { temp.next = new ListNode(list.get(i)); temp = temp.next; }