LeetCode——合并K个排序链表
Posted CCxiao5
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode——合并K个排序链表相关的知识,希望对你有一定的参考价值。
题目地址:https://leetcode-cn.com/problems/merge-k-sorted-lists/
解题思路:简单的分治算法
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { private: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode *Head=new ListNode(0); ListNode *p,*q,*h; p=l1; q=l2; h=Head; while(p&&q){ if(p->val>=q->val){ h->next=q; h=h->next; q=q->next; } else{ h->next=p; h=h->next; p=p->next; } } if(p) h->next=p; else h->next=q; return Head->next; } ListNode *merge(vector<ListNode*>& lists,int l,int r){ if (l == r) return lists[l]; if (l > r) return nullptr; int mid = (l + r) >> 1; return mergeTwoLists(merge(lists, l, mid), merge(lists, mid + 1, r)); } public: ListNode* mergeKLists(vector<ListNode*>& lists) { return merge(lists,0,lists.size()-1); } };
以上是关于LeetCode——合并K个排序链表的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode练习(Python):链表类:第23题:合并K个排序链表:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。