/**
* 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;
while(l1 || l2){
int n1 = l1 ? l1 -> val : 0;
int n2 = l2 ? l2 -> val : 0;
int sum = n1 + n2 + carry;
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;
}
carry = sum / 10;
}
if(carry > 0){
tail -> next = new ListNode(carry);
tail = tail -> next;
}
};
};
"""
ListNode中的默认构造函数,以及带参数的构造函数
以及构造新结点 head = new ListNode(sun%10),学习如何构建新结点,以及构造函数的使用,
条件表达式那里,把要加的数处理为0,可以避免一个链条短一些不能相加的情况。
结尾把未处理的进位加入到结点的尾部。
"""
leetcode2
最新推荐文章于 2024-08-26 10:49:37 发布