1 题目
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
2 解法
2.1 初版解法
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode* resNode = NULL;bool moreThanTen = false;ListNode* currentTailNode = NULL;while (l1 || l2) {int nodeValue = 0;if (l1) {nodeValue += l1->val;l1 = l1->next;}if (l2) {nodeValue += l2->val;l2 = l2->next;}if (moreThanTen) {nodeValue ++;}if (nodeValue >= 10) {nodeValue -= 10;moreThanTen = true;} else {moreThanTen = false;}if (!resNode) {resNode = new ListNode(nodeValue);currentTailNode = resNode;} else {currentTailNode->next = new ListNode(nodeValue);currentTailNode = currentTailNode->next;}}if (moreThanTen) {currentTailNode->next = new ListNode(1);}return resNode;}
};
性能太差: