题解 | #链表相加(二)#
链表相加(二)
https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * * @param head1 ListNode类 * @param head2 ListNode类 * @return ListNode类 */ public ListNode addInList (ListNode head1, ListNode head2) { ArrayList<ListNode> list1 = new ArrayList<>(); ArrayList<ListNode> list2 = new ArrayList<>(); ListNode res = new ListNode(0); while (head1 != null) { ListNode node = new ListNode(head1.val); list1.add(node); head1 = head1.next; } while (head2 != null) { ListNode node = new ListNode(head2.val); list2.add(node); head2 = head2.next; } int k = Math.max(list1.size(), list2.size()); int carry = 0; int size1 = list1.size() - 1; int size2 = list2.size() - 1; int a=0,b=0; while (k>=0) { if (size1 < 0) a = 0; else a = list1.get(size1).val; if (size2 < 0) b = 0; else b = list2.get(size2).val; ListNode node = new ListNode(0); node.val = (a + b + carry) % 10; carry = (a + b + carry) / 10; ListNode next = res.next; res.next = node; node.next = next; size1--; size2--; k--; } if (carry > 0) { ListNode node = new ListNode(carry); ListNode next = res.next; res.next = node; node.next = next; if(res.next.val == 0) res = res.next; return res.next; } if(res.next.val==0) res = res.next; return res.next; } }