2. 两数相加
https://leetcode-cn.com/problems/add-two-numbers/
解法一:
就如同竖式加法,只是倒过来
遍历两个链表,对应位相加,进位向后传递。难点:链表长度不同时处理,以及进位处理.
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* head = new ListNode(0); //头结点
ListNode* tmp = head; //工作节点
int upgrade = 0; //进位标志
while (l1 || l2 || upgrade) {
int sum = (l1 ? l1->val : 0) + (l2 ? l2->val : 0) + upgrade;
upgrade = sum / 10;
tmp->next = new ListNode(sum % 10);
l1 = l1 ? l1->next : NULL; //判断是否有后继
l2 = l2 ? l2->next : NULL;
tmp = tmp->next;
}
return head->next; //头结点不使用
}
};最后更新于