解法 :直接用两个链表构造出第三个链表即可注意点 :进位carry。进位的情况有几种,都要考虑上。(其实感觉这道题不是很难,挺直观的) 时间复杂度 :O(max(m,n)),m&n分别为两链表长度。max(m,n)其实就是下面while()循环的次数。空间复杂度 :O(max(m,n))。结果链表的长度最多为较长链表的长度 +1(最后进位的情况)。  public  ListNode  addTwoNumbers ( ListNode  l1,  ListNode  l2)  { ListNode  l3 =  new  ListNode ( ) ; ListNode  forl1 =  l1,  forl2 =  l2,  forl3 =  l3;  int  carry =  0 ;  while  ( true ) { if  ( forl1 ==  null  &&  forl2 ==  null ) break ; else { int  num1 =  forl1 ==  null  ?  0  :  forl1. val; int  num2 =  forl2 ==  null  ?  0  :  forl2. val; forl3. val +=  num1 +  num2; carry =  forl3. val /  10 ; forl3. val -=  carry *  10 ; forl1 =  forl1 ==  null  ?  forl1 :  forl1. next; forl2 =  forl2 ==  null  ?  forl2 :  forl2. next; } if  ( forl1 ==  null  &&  forl2 ==  null  &&  carry ==  0 ) break ; ListNode  newNode =  new  ListNode ( carry) ; forl3. next =  newNode; forl3 =  forl3. next; } return  l3; } 
}