LeetCode Problem2解题报告

来源:互联网 发布:mr消音软件 编辑:程序博客网 时间:2024/06/07 19:56

将两个链表看成倒序的十进制数,最左边为低位,最右边为高位,低位对齐,高位不足补0,用last指针的next代表进位项

ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode* result = new ListNode(-1); ListNode* last = result; last->next = new ListNode(0); while (l1 != NULL || l2 != NULL) { if (l1 == NULL) { l1 = new ListNode(0); } if (l2 == NULL) { l2 = new ListNode(0); } int data = l1->val + l2->val+last->next->val; if (data>9){ if (result->val == -1) { result = new ListNode(data - 10); last = result; last->next = new ListNode(1); } else{ ListNode* node = new ListNode(data - 10); last->next = node; last = last->next; last->next = new ListNode(1); } } else { if (result->val == -1) { result = new ListNode(data); last = result; last->next = new ListNode(0); } else { ListNode* node = new ListNode(data); last->next = node; last = last->next; last->next = new ListNode(0); } } l1 = l1->next; l2 = l2->next;} if (last->next->val==0){ last->next = NULL; } return result; }


原创粉丝点击