描述
假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。
给定两个这种链表,请生成代表两个整数相加值的结果链表。
答案:栈
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) {
ListNode head = new ListNode(-1);
Stack<Integer> stack1 = new Stack<>();
Stack<Integer> stack2 = new Stack<>();
while(head1 != null) {
stack1.push(head1.val);
head1 = head1.next;
}
while(head2 != null) {
stack2.push(head2.val);
head2 = head2.next;
}
int carry = 0;
while(!stack1.isEmpty() && !stack2.isEmpty()) {
int val = stack1.pop() + stack2.pop() + carry;
int num = val % 10;
carry = val / 10;
ListNode node = new ListNode(num);
node.next = head.next;
head.next = node;
}
while(!stack1.isEmpty()) {
int val = stack1.pop() + carry;
int num = val % 10;
carry = val / 10;
ListNode node = new ListNode(num);
node.next = head.next;
head.next = node;
}
while(!stack2.isEmpty()) {
int val = stack2.pop() + carry;
int num = val % 10;
carry = val / 10;
ListNode node = new ListNode(num);
node.next = head.next;
head.next = node;
}
if(carry != 0) {
ListNode node = new ListNode(carry);
node.next = head.next;
head.next = node;
}
return head.next;
}
}