题解
迭代累加
public class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { // 存放头节点,作为返回值 ListNode head = null; // 存放当前节点 ListNode temp = null; // 记录是否进位,如果进位为 1,无进位为 0 int nextTip = 0; // 循环终于条件:l1 和 l2 都为空 while (l1 != null || l2 != null) { // 如果链表不为空,记录链表的值,如果为空则补 0 int l1V = l1 != null ? l1.val : 0; int l2V = l2 != null ? l2.val : 0; // 记录相加之后的值,注意要加进位 int sum = l1V + l2V + nextTip; // 如果 sum 大于等于10,进位 nextTip = sum >= 10 ? 1 : 0; // 如果头节点为空,说明是第一次循环,进行初使化头节点操作 if (head == null) { head = temp = new ListNode(sum % 10); } else { temp.next = new ListNode(sum % 10); temp = temp.next; } if (l1 != null) l1 = l1.next; if (l2 != null) l2 = l2.next; } // 注意处理最后一个进位 if (nextTip == 1) temp.next = new ListNode(1); return head; }}