题解 | #链表相加(二)#
https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b
三栈数据结构,不精简了,方便阅读
public ListNode addInList(ListNode head1, ListNode head2) { // write code here if (head1 == null) { return head2; } else if (head2 == null) { return head1; } Stack<Integer> stack1 = new Stack<>(); Stack<Integer> stack2 = new Stack<>(); Stack<Integer> res = new Stack<>(); while (head1 != null) { stack1.push(head1.val); head1 = head1.next; } while (head2 != null) { stack2.push(head2.val); head2 = head2.next; } ListNode sentinel = new ListNode(-1); ListNode cur = sentinel; int carry = 0; while (!stack1.isEmpty() && !stack2.isEmpty()) { int temp = carry + stack1.pop() + stack2.pop(); if (temp >= 10) { carry = 1; res.push(temp % 10); } else { carry = 0; res.push(temp); } } while (!stack1.isEmpty()) { int temp = carry + stack1.pop(); if (temp >= 10) { carry = 1; res.push(temp % 10); } else { carry = 0; res.push(temp); } } while (!stack2.isEmpty()) { int temp = carry + stack2.pop(); if (temp >= 10) { carry = 1; res.push(temp % 10); } else { carry = 0; res.push(temp); } } while (!res.isEmpty()) { ListNode node = new ListNode(res.pop()); cur.next = node; cur = cur.next; } return sentinel.next; }