1、遍历链表
遍历整个链表,时间复杂度为O(m,n)(两个链表中的较大者。)
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *l=nullptr,*p=nullptr;
int add = 0;
while (l1 || l2) {
int n1 = l1 ? l1->val: 0;
int n2 = l2 ? l2->val: 0;
int sum = n1 + n2 + add;
if (!l) {
l = p = new ListNode(sum % 10);
} else {
p->next = new ListNode(sum % 10);
p = p->next;
}
add = sum / 10;
if (l1) {
l1 = l1->next;
}
if (l2) {
l2 = l2->next;
}
}
if (add > 0) {
p->next = new ListNode(add);
}
return l;
}
};
其余算法待补充