Sum of Two Linked Lists - 1

Given two numbers represented by two lists, write a function that returns sum list. The sum list is list representation of addition of two input numbers.

Example 1

Input:
  First List: 5->6->3  // represents number 365
  Second List: 8->4->2 //  represents number 248
Output
  Resultant list: 3->1->6  // represents number 613

Example 2

Input:
  First List: 7->5->9->4->6  // represents number 64957
  Second List: 8->4 //  represents number 48
Output
  Resultant list: 5->0->0->5->6  // represents number 65005

Solution
Traverse both lists. One by one pick nodes of both lists and add the values. If sum is more than 10 then make carry as 1 and reduce sum. If one list has more elements than the other then consider remaining values of this list as 0. Following is Java implementation of this approach.

public ListNode addLinkedList(ListNode a, ListNode b) {
	ListNode result = new ListNode(0);
	ListNode dummy = result;
	int carry = 0;
	while(a!=null || b!=null) {
		int sum = carry + ((a!=null)?a.val:0) + ((b!=null)?b.val:0);
		carry = sum / 10;
		result.next = new ListNode(sum%10);
		result = result.next;
		if(a!=null) a=a.next;
		if(b!=null) b=b.next;
	}
	if(carry>0) {
		result.next = new ListNode(carry);
	}
	return dummy.next;
}

 

你可能感兴趣的:(list)