leetcode每日一题-21:合并两个有序链表

leetcode每日一题-21:合并两个有序链表

链接

合并两个有序链表


题目

在这里插入图片描述



分析

我们设置一个虚拟头节点和新链表的尾节点,然后一直遍历两个链表,往新链表尾节点后面插入即可。



代码

C++

/**
 * 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* list1, ListNode* list2) {
    
    
        auto dummy = new ListNode(1);
        auto tail = dummy;

        while(list1 and list2)
        {
    
    
            if(list1->val <= list2->val)
            {
    
    
                tail->next = list1;
                tail = tail->next;
                list1 = list1->next;
            }
            else
            {
    
    
                tail->next = list2;
                tail = tail->next;
                list2 = list2->next;
            }
        }

        while(list1)
        {
    
    
            tail->next = list1;
            tail = tail->next;
            list1 = list1->next;
        }

        while(list2)
        {
    
    
            tail->next = list2;
            tail = tail->next;
            list2 = list2->next;
        }

        tail->next = nullptr;

        return dummy->next;
    }
};

Java

class Solution {
    
    
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
    
    
        ListNode prehead = new ListNode(-1);

        ListNode prev = prehead;
        while (l1 != null && l2 != null) {
    
    
            if (l1.val <= l2.val) {
    
    
                prev.next = l1;
                l1 = l1.next;
            } else {
    
    
                prev.next = l2;
                l2 = l2.next;
            }
            prev = prev.next;
        }

        // 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可
        prev.next = l1 == null ? l2 : l1;

        return prehead.next;
    }
}

作者:LeetCode-Solution

猜你喜欢

转载自blog.csdn.net/qq_45826803/article/details/121583428