面试题 02.05. 链表求和
题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sum-lists-lcci/submissions/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目分析
注:
- while循环里包括处理到最后add还有进位的情况
- l1、l2不等时,要设置为空指针
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* dummy = new ListNode(0);//存储结果
ListNode* cur = dummy;
int add = 0;
while(l1 || l2 || add){
add += (l1 ? l1->val : 0) + (l2 ? l2->val : 0);//无值补0
cur->next = new ListNode(add%10);
cur = cur->next;
add/=10;//获得进位的值
l1 = l1 ? l1->next : nullptr;
l2 = l2 ? l2->next : nullptr;
}
return dummy->next;
}
};