LeetCode2. 两数相加
题目
分析
模拟题目
先建立哑结点,采用头插法。
代码
1 class Solution { 2 public: 3 ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { 4 ListNode *head = new ListNode(); 5 ListNode *cur = head; 6 int sum = 0; 7 while(l1 || l2 || sum){ 8 if(l1){ 9 sum += l1->val; 10 l1 = l1->next; 11 } 12 if(l2){ 13 sum += l2->val; 14 l2 = l2->next; 15 } 16 ListNode *node = new ListNode(sum % 10); 17 sum /= 10; 18 cur->next = node; 19 cur = cur->next; 20 } 21 return head->next; 22 } 23 };
1 class Solution { 2 public: 3 ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { 4 //建立哑节点,这样不需要对第一个元素特判 5 auto dummy = new ListNode(); 6 auto cur = dummy; 7 8 int c = 0; //进位 9 while(l1 || l2 || c){ 10 if(l1) {c += l1->val;l1 = l1->next;} 11 if(l2) {c += l2->val;l2 = l2->next;} 12 13 // auto p = new ListNode(c%10); 14 // cur ->next = p;cur = cur->next; 15 16 //上面两行精简为 17 cur =cur->next = new ListNode(c % 10); 18 19 c /= 10; 20 } 21 22 return dummy->next; 23 }