文章目录
 - 题目
 - 方法一:借助一个进制位,以及更新尾结点
 - 方法一改进:相比较第一种,给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; }