Level 1 (day 3)

第一题

题目链接:https://leetcode.cn/problems/merge-two-sorted-lists/

个人题解:设置虚拟头节点,分别取元素比大小,还有剩下的话加上去

代码:

/**
 * 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* mergeTwoLists(ListNode* l1, ListNode* l2) {
        auto dummy=new ListNode(-1),tail=dummy;
        while(l1 && l2){
            if(l1->val<l2->val){
                tail=tail->next=l1;
                l1=l1->next;
            } 
            else {
                tail=tail->next=l2;
                l2=l2->next;
            }
        }
        if(l1) tail->next=l1;
        if(l2) tail->next=l2;
        return dummy->next;
    }
};

第二题

题目链接:https://leetcode.cn/problems/reverse-linked-list/

个人题解:设置两个,迭代即可

代码:

/**
 * 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* reverseList(ListNode* head) {
        ListNode* a=nullptr;
        ListNode* b=head;
        while(b){
            auto c=b->next;
            b->next=a;
            a=b;
            b=c;
        }
        return a;
    }
};
posted @ 2022-06-25 14:38  黑VS白-清墨  阅读(31)  评论(0)    收藏  举报