标签:ListNode val 相加 next tail l2 l1 Leetcode
考察了对链表的使用
/**
* 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 *head = nullptr, *tail = nullptr;
int last=0; //保存进位
while(l1 || l2) { //有一个链表非空则继续计算
int sum = 0; //保存当前和
if(l1) sum += l1->val;
if(l2) sum += l2->val;
sum += last;
last=sum/10; //更新进位
if(!head) head = tail = new ListNode(sum%10); //没有头结点,所以第一个节点就是结构体节点,需要特判一下
else {
tail->next = new ListNode(sum%10);
tail = tail->next;
}
if(l1) l1 = l1->next;
if(l2) l2 = l2->next;
}
if(last) tail->next = new ListNode(last); //最后特判是否进位
return head;
}
};
标签:ListNode,val,相加,next,tail,l2,l1,Leetcode 来源: https://blog.csdn.net/AGNING/article/details/123029474
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。