题目描述
给你一个链表数组,每个链表都已经按升序排列。
请你将所有链表合并到一个升序链表中,返回合并后的链表。
思路
如果是考研题,可以用败者树,但代码太难写了,我选择直接比。
代码
class Solution {
public:
ListNode* mergeKLists(vector<ListNode*>& lists) {
int n=lists.size();
int min=0,idx=0;
ListNode *head = new ListNode;
ListNode *rear = head;
while(min<10001){
min=10001;
for(int i=0; i<n;i++){
if(lists[i]&&lists[i]->val<min){
min=lists[i]->val;
idx=i;
}
}
if(min<10001){
rear->next=lists[idx];
rear=rear->next;
lists[idx]=lists[idx]->next;
}
}
return head->next;
}
};