文章目录
题目 方法一:借助一个进制位,以及更新尾结点 方法一改进:相比较第一种,给head一个临时头节点(开始节点),最后返回的时候返回head.next,这样可以省去第一次的判断
题目
方法一:借助一个进制位,以及更新尾结点
public static ListNode addTwoNumbers ( ListNode l1, ListNode l2) {
ListNode head = null ;
ListNode tail = null ;
int cay = 0 ;
int n1 = 0 ;
int n2 = 0 ;
while ( l1 != null || l2 != null ) {
if ( l1 == null ) n1 = 0 ;
else n1 = l1. val;
if ( l2 == null ) n2 = 0 ;
else n2 = l2. val;
int sum = n1 + n2 + cay;
if ( head == null )
head = tail = new ListNode ( sum % 10 ) ;
else {
tail. next = new ListNode ( sum % 10 ) ;
tail = tail. next;
}
cay = sum / 10 ;
if ( l1 != null ) l1 = l1. next;
if ( l2 != null ) l2 = l2. next;
}
if ( cay == 1 ) {
tail. next = new ListNode ( 1 ) ;
tail. next. next = null ;
}
return head;
}
方法一改进:相比较第一种,给head一个临时头节点(开始节点),最后返回的时候返回head.next,这样可以省去第一次的判断
ListNode begin = new ListNode ( 1 ) ;
int sum = n1 + n2 + cay;
tail. next = new ListNode ( sum % 10 ) ;
tail = tail. next;
cay = sum / 10 ;
public static ListNode addTwoNumbers ( ListNode l1, ListNode l2) {
ListNode begin = new ListNode ( 1 ) ;
ListNode head = begin;
ListNode tail = head;
int cay = 0 ;
int n1 = 0 ;
int n2 = 0 ;
while ( l1 != null || l2 != null ) {
if ( l1 == null ) n1 = 0 ;
else n1 = l1. val;
if ( l2 == null ) n2 = 0 ;
else n2 = l2. val;
int sum = n1 + n2 + cay;
tail. next = new ListNode ( sum % 10 ) ;
tail = tail. next;
cay = sum / 10 ;
if ( l1 != null ) l1 = l1. next;
if ( l2 != null ) l2 = l2. next;
}
if ( cay == 1 ) {
tail. next = new ListNode ( 1 ) ;
tail. next. next = null ;
}
return head. next;
}