时间复杂度:O(n),空间复杂度O(n)
思路:将链表的值分别放到两个双端队列中,从后往前加(大数加法类似)
将最后的结果拼接成新的链表;
public ListNode addInList (ListNode head1, ListNode head2) {
// write code here
LinkedList<Integer> list1 = new LinkedList();
LinkedList<Integer>list2 = new LinkedList();
ArrayList<Integer> res = new ArrayList();
ListNode numpy = new ListNode(1);
ListNode node = numpy;
while(head1!=null){
list1.add(head1.val);
head1=head1.next;
}
while(head2!=null){
list2.add(head2.val);
head2=head2.next;
}
int targe = 0;
int sum = 0;
while(!list1.isEmpty()||!list2.isEmpty()){
if(list1.isEmpty()){
sum=list2.pollLast()+targe;
}
else if(list2.isEmpty()){
sum=list1.pollLast()+targe;
}
else {
sum = list1.pollLast()+list2.pollLast()+targe;
}
targe = 0;
if(sum>=10){
targe = 1;
sum = sum-10;
}
res.add(sum);
}
if(targe==1){
res.add(targe);
}
for(int i = res.size()-1;i>=0;i--){
node.next = new ListNode(res.get(i));
node=node.next;
}
return numpy.next;
}

京公网安备 11010502036488号