Add Two Numbers

来源:互联网 发布:执行方案范文知乎 编辑:程序博客网 时间:2024/06/07 05:44
  • Add Two Numbers
  • 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


  • A这道题主要是考虑到输入的两个list是否为空, 长度不一致的处理,最关键的还是进位的处理。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 *head=NULL, *curNode = NULL;    if(!l1)        return l2;    if(!l2)        return l1;    int bit = 0;    while(l1 && l2)    {        ListNode *newNode = new ListNode(l1->val + l2->val + bit);        newNode->next = NULL;        l1 = l1->next;        l2 = l2->next;        if(newNode->val >= 10)        {            newNode->val -= 10;            bit = 1;        }        else            bit = 0;        if(!head)        {            head = newNode;            curNode = head;        }        else        {            curNode ->next = newNode;            curNode = curNode ->next;        }    }    while(l1)    {        l1->val += bit;        if(l1->val>=10)        {            l1->val -= 10;            bit = 1;        }        else        {            bit = 0;        }        ListNode *newNode = new ListNode(l1->val);        newNode->next = NULL;        curNode->next = newNode;        curNode=curNode->next;        l1 = l1->next;    }    while(l2)    {        l2->val += bit;        if(l2->val >=10)        {            l2->val -= 10;            bit = 1;        }        else        {            bit = 0;        }        ListNode *newNode = new ListNode(l2->val);        newNode->next = NULL;        curNode->next = newNode;        curNode=curNode->next;        l2 = l2->next;    }    if(bit)    {        ListNode *tailNode = new ListNode(1);        curNode->next = tailNode;        curNode = curNode->next;    }    return head;     }};
0 0
原创粉丝点击