LeetCode --- Add Two Numbers

6060 단어 LeetCode
제목 링크
말하자면 기초 문제지만 각종 CE, 각종 WA는 기초가 튼튼하지 않다.
부착된 코드:
 1 /**  2  * Definition for singly-linked list.  3  * struct ListNode {  4  * int val;  5  * ListNode *next;  6  * ListNode(int x) : val(x), next(NULL) {}  7  * };  8  */

 9 class Solution { 10 public: 11     ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) { 12         if (l1 == NULL) return l2; 13         if (l2 == NULL) return l1; 14         // q: keep trace of the linked list that has been produced as the answer 15         // ll1: keep trace of l1 16         // ll2: keep trace of l2

17         ListNode *head(NULL), *q(NULL), *ll1 = l1, *ll2 = l2; 18         // c: holds the carry digit 

19         int c = 0; 20         while (ll1!=NULL || ll2!=NULL) { 21             // sum: holds sum of ll1->val, ll2->val and c

22             int sum = 0; 23             if (ll1 != NULL) { 24                 sum += ll1->val; 25                 ll1 = ll1->next; 26  } 27             if (ll2 != NULL) { 28                 sum += ll2->val; 29                 ll2 = ll2->next; 30  } 31             sum += c; 32             ListNode *p = new ListNode(sum%10); 33             c = sum >= 10 ? 1 : 0; 34             if (head == NULL) { 35                 head = q = p; 36             } else { 37                 q->next = p; 38                 q = p; 39  } 40  } 41         if (c) { 42             q->next = new ListNode(c); 43  } 44         return head; 45  } 46 };

좋은 웹페이지 즐겨찾기