Leetcode-2 两数相加

考察了对链表的使用
Leetcode-2 两数相加

/**
 * 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;
    }
};
上一篇:[VNCTF2022]部分wp


下一篇:Swagger配置