解法一:申请三个指针,分别指向l1、l2、new_l
。先设置第一个节点;再l1、l2循环设置后续节点;若某一条链未结束,继续循环设置;若最后enter1
(下一位是否进1)仍为真,则多了一位还要新加一位1。
class Solution { public ListNode addTwoNumbers ( ListNode l1, ListNode l2) { ListNode sum_list = new ListNode ( ) ; ListNode p1 = l1. next, p2 = l2. next, ps = sum_list; int sum = l1. val+ l2. val; boolean enter1 = sum>= 10 ? true : false ; sum_list. val = sum% 10 ; sum_list. next = null ; while ( p1!= null && p2!= null ) { sum = enter1 ? p1. val+ p2. val+ 1 : p1. val+ p2. val; enter1 = false ; if ( sum >= 10 ) { enter1 = true ; } ListNode temp = new ListNode ( ) ; temp. val = sum% 10 ; temp. next = ps. next; ps. next = temp; ps = ps. next; p1 = p1. next; p2 = p2. next; } p1 = p1!= null ? p1 : p2; while ( p1!= null ) { sum = enter1 ? p1. val+ 1 : p1. val; enter1 = false ; if ( sum >= 10 ) { enter1 = true ; } ListNode temp = new ListNode ( ) ; temp. val = sum% 10 ; temp. next = ps. next; ps. next = temp; ps = ps. next; p1 = p1. next; } if ( enter1) { ListNode temp = new ListNode ( ) ; temp. val = 1 ; temp. next = ps. next; ps. next = temp; } return sum_list; }
}