You are given two non-empty linked lists rePResenting two non-negative integers. 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.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8
不难的题
/** * 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 c=0;//存储进位 ListNode* re=l1; while(l1->next!=NULL && l2->next!=NULL) { int temp=(l1->val+l2->val+c)/10; l1->val=(l1->val+l2->val+c)%10; c=temp; l1=l1->next; l2=l2->next; } if(l1->next==NULL)//l1短的情况 { l1->val+=l2->val; l1->next=l2->next; } else l1->val+=l2->val; while(l1->next!=NULL) { int temp=(l1->val+c)/10; l1->val=(l1->val+c)%10; c=temp; l1=l1->next; } if((c+l1->val)/10==0) l1->val+=c; else{ l1->val=(c+l1->val)%10; ListNode te(1); l1->next=&te; } return re; }};新闻热点
疑难解答