Leetcode21||剑指offer17:合并两个有序链表

递归版:

    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        if(!l1) return l2;
        else if(!l2) return l1;
        ListNode* res = nullptr;
        if(l1->val < l2->val)
        {
            res = l1;
            res->next = mergeTwoLists(l1->next, l2);
        }
        else
        {
            res = l2;
            res->next = mergeTwoLists(l1, l2->next);
        }
        return res;
    }

非递归版:

ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) 
{
	if (l1 == nullptr)
		return l2;
	if (l2 == nullptr)
		return l1;
	ListNode* p = new ListNode(-100);
	ListNode* res = p;
	while (l1 && l2)
	{
		if (l1->val < l2->val)
		{
			p->next = l1;
			l1 = l1->next;
		}
		else
		{
			p->next = l2;
			l2 = l2->next;
		}
		p = p->next;
	}
	p->next = l1 ? l1 : l2;
	return res->next;
}

猜你喜欢

转载自blog.csdn.net/hlk09/article/details/81162862
今日推荐