时间复杂度: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; }