三栈数据结构,不精简了,方便阅读
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;
}

京公网安备 11010502036488号