合并 K 个升序链表——力扣23

题目描述

合并 K 个升序链表——力扣23_第1张图片
合并 K 个升序链表——力扣23_第2张图片

法一 顺序合并

在这里插入图片描述

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2){
		ListNode* dummy = new ListNode(-1);   //创建一个新的头节点 
		ListNode *cur=dummy, *aPtr = l1, *bPtr = l2;
		while(aPtr && bPtr){
			if(aPtr->val < bPtr->val){
				dummy->next = aPtr;
				aPtr = aPtr->next;
			} else {
				dummy->next = bPtr;
				bPtr = bPtr->next;
			}
			dummy = dummy->next;
		}
		dummy->next = aPtr ? aPtr : bPtr;
		return cur->next;	
	}
	
	ListNode* mergeKLists(vector<ListNode*>& lists){
		ListNode* ans = nullptr;
		for(int i=0;i<lists.size();i++)	{
			ans = mergeTwoLists(ans, lists[i]);
		}
		return ans;
	}
};

合并 K 个升序链表——力扣23_第3张图片

你可能感兴趣的:(算法刷题笔记,链表,leetcode,数据结构,c++,算法,职场和发展)