leetcode 4ADD TWO NUMBERS

来源:互联网 发布:网络借贷宝怎么还款啊 编辑:程序博客网 时间:2024/05/19 02:28

 Youare given two linked lists representing two non-negative numbers. The digitsare stored in reverse order and each of their nodes contain a single digit. Addthe two numbers and return it as a linked list.

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8

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 rootNode(0);        ListNode *pCurNode = &rootNode;        int v1,v2,sum;        int forward = 0;        while(l1||l2)        {            v1 = (l1 ? l1->val : 0);            v2 = (l2 ? l2->val : 0);            sum = v1 + v2 + forward;            forward = sum / 10;            sum = sum % 10;            ListNode *pNode = new ListNode(sum);            pCurNode->next = pNode;            pCurNode = pNode;            if(l1) l1 = l1->next;            if(l2) l2 = l2 ->next;        }        if(forward > 0)        {            ListNode *pNode = new ListNode(forward);            pCurNode->next = pNode;        }        return rootNode.next;    }};

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) {int v1 = (l1 ? l1->val : 0);        int v2 = (l2 ? l2->val : 0);        int sum = v1 + v2;ListNode *pCurNode =new ListNode(sum%10);ListNode *p=pCurNode;int forward = sum/10;if(l1) l1 = l1->next;        if(l2) l2 = l2 ->next;                while(l1||l2)        {            v1 = (l1 ? l1->val : 0);            v2 = (l2 ? l2->val : 0);            sum = v1 + v2 + forward;            forward = sum / 10;            sum = sum % 10;            ListNode *pNode = new ListNode(sum);            pCurNode->next = pNode;            pCurNode = pNode;                        if(l1) l1 = l1->next;            if(l2) l2 = l2 ->next;        }        if(forward > 0)        {            ListNode *pNode = new ListNode(forward);            pCurNode->next = pNode;        }        return p;    }};


0 0
原创粉丝点击