2. 两数相加
解法一:
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; //头结点不使用
}
};最后更新于