Thursday, February 25, 2016

2. Add Two Numbers

Question: 

You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8

Solution: 
 
Add each element of two list with the help of a variable "carry". When both of the lists meet their end, return result.
1. One of the list is NULL:
l1:    NULL
l2:    1->2
sum: 1->2
2.  The lengths of l1 and  l2 are different:
l1:     2->2
l2:     9->9->9
sum: 1->2->0->1

Coding(C++): 
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode* res = new ListNode(0);
        ListNode* head = res;
        int carry = 0;
        while(l1 && l2){
            res->next = new ListNode((l1->val+l2->val+carry)%10);
            res = res->next;
            carry = (l1->val+l2->val+carry)/10;
            l1 = l1->next;
            l2 = l2->next;
        }
        while(l1){
            res->next = new ListNode((l1->val+carry)%10);
            res = res->next;
            carry = (l1->val+carry)/10;
            l1 = l1->next;
        }
        while(l2){
            res->next = new ListNode((l2->val+carry)%10);
            res = res->next;
            carry = (l2->val+carry)/10;
            l2 = l2->next;
        }
        if(carry > 0){
            res->next = new ListNode(carry);
        }
        return head->next;
    }
};

1 comment :

  1. Online resources have become essential in modern education. Many students struggle with balancing academic and personal commitments. By using business assignment help online, they gain access to experts anytime, anywhere. This flexibility allows them to submit well-researched work on time while still grasping the core concepts of business management and real-world applications effectively.

    ReplyDelete