思路:大数相加+链表反转
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) { // write code here ListNode ans = new ListNode(-1); ListNode p = ans; int pre = 0; head1 = reverse(head1); head2 = reverse(head2); while(head1!=null&&head2!=null){ int sum = head1.val+head2.val + pre; pre = sum/10; p.next = new ListNode(sum%10); p = p.next; head1 = head1.next; head2 = head2.next; } while(head1!=null){ int sum = head1.val+pre; pre = sum/10; p.next = new ListNode(sum%10); p = p.next; head1 = head1.next; } while(head2!=null){ int sum = head2.val+pre; pre = sum/10; p.next = new ListNode(sum%10); p = p.next; head2 = head2.next; } if(pre == 1){ p.next = new ListNode(1); } //翻转链表 return reverse(ans.next); } public ListNode reverse(ListNode head){ //ListNode p = head; ListNode pre = null; while(head!=null){ ListNode next = head.next; head.next = pre; pre = head; head = next; } return pre; } }