classSolution{ public ListNode addTwoNumbers(ListNode l1, ListNode l2){ if (l1 == null || l2 == null) { returnnull; } List<Integer> arr1 = new ArrayList<>(); List<Integer> arr2 = new ArrayList<>(); while (l1 != null) { arr1.add(l1.val); l1 = l1.next; }
while (l2 != null) { arr2.add(l2.val); l2 = l2.next; }
List<Integer> res = addTwoNumbers(arr1, arr2);
ListNode p = new ListNode(res.get(0)); ListNode t = p; for (int i = 1; i < res.size(); i++) { t.next = new ListNode(res.get(i)); t = t.next; } return p; }
public List<Integer> addTwoNumbers(List<Integer> arr1, List<Integer> arr2){ int m = arr1.size(); int n = arr2.size(); int left = m - 1; int right = n - 1; int d = 0; List<Integer> res = new ArrayList(); while (left >= 0 && right >= 0) {
int v = d + arr1.get(left) + arr2.get(right); int s = v % 10; res.add(s); d = v / 10; left--; right--; }
while (left >= 0) { int v = d + arr1.get(left); int s = v % 10; res.add(s); d = v / 10; left--; }
while (right >= 0) { int v = d + arr2.get(right); int s = v % 10; res.add(s); d = v / 10; right--; }
if (d > 0) { res.add(d); }
List<Integer> res2 = new ArrayList();
for (int i = res.size() - 1; i >= 0; i--) { res2.add(res.get(i)); } return res2; }