1 Star 0 Fork 0

银色飞翼/leetcode

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
2.两数相加.cpp 1.37 KB
一键复制 编辑 原始数据 按行查看 历史
银色飞翼 提交于 2023-03-29 20:51 . 第一次提交
/**
* 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; //定义头结点为空
ListNode *tail = nullptr;
int carry = 0, sum = 0;
while (l1 || l2){
int n1 = l1 ? l1->val : 0; //l1有value, 取出给n1
int n2 = l2 ? l2->val : 0;
sum = n1 + n2 + carry;
if (!head){ // 头结点为空,新链表没有节点
head = tail = new ListNode(sum % 10); //插入新节点
} else { //有头结点,后续节点插入
tail->next = new ListNode(sum % 10); //尾节点后插入
tail = tail->next;
}
carry = sum / 10; //进位值
if (l1){ // l1还有节点继续访问
l1 = l1->next;
}
if (l2){
l2 = l2->next;
}
}
if (carry > 0) {// 最后一个进位值放到链表最
tail->next = new ListNode(carry);
tail = tail->next;
}
return head; // 返回头结点即可
}
};
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/joshliu357/leetcode.git
git@gitee.com:joshliu357/leetcode.git
joshliu357
leetcode
leetcode
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385