LeetCode之2. 兩數相加
阿新 • • 發佈:2018-11-23
LeetCode之2. 兩數相加
- 給出兩個 非空 的連結串列用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。
- 如果,我們將這兩個數相加起來,則會返回一個新的連結串列來表示它們的和。
- 您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
示例:
輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
輸出:7 -> 0 -> 8
原因:342 + 465 = 807
程式碼如下:
/** * 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 i = 0, flag = 0; ListNode *lt = new ListNode(0); ListNode *head = lt; for ( i = 0; l1 != NULL||l2!=NULL||flag==1;i++) { int sum = 0; if (flag == 1) { sum++; } if (l1==NULL&&l2!=NULL) { sum += l2->val; if (sum >= 10) { flag = 1; sum %= 10; } else { flag = 0; } lt->val = sum; } else if (l2==NULL&&l1!=NULL) { sum += l1->val; if (sum >= 10) { flag = 1; sum %= 10; } else { flag = 0; } lt->val = sum; }else if (l1!=NULL&&l2!=NULL) { sum += l1->val + l2->val; if (sum >= 10) { flag = 1; sum %=10 ; } else { flag = 0; } lt->val = sum; } else { if (sum >= 10) { flag = 1; sum %= 10; } else { flag = 0; } lt->val = sum; } if (l1!=NULL) { l1 = l1->next; } if (l2 != NULL) { l2 = l2->next; } if (l1==NULL&&l2==NULL&&flag==0) { break; } lt->next = new ListNode(0); lt = lt->next; } return head; } };