17_leetcode_merge k Sorted List

来源:互联网 发布:大数据技术研究方向 编辑:程序博客网 时间:2024/05/29 08:50

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

1:当链表数组为NULL或者只有一个链表的情况,直接返回;2:采用归并的方法合并链表数组中的链表;3:注意NULL链表的情况;4:在合并过程中,当一个链表较长的时候,处理较长的部分。

    ListNode* mergeKLists(vector<ListNode* > &lists)    {        if(lists.size() == 0)            return NULL;        if(lists.size() == 1)            return lists[0];                int size = (int)lists.size();                return mergeKListsCore(lists, 0, size - 1);    }        ListNode* mergeKListsCore(vector<ListNode* > &lists, int start, int end)    {        if(start == end)        {            return lists[start];        }                int middle = (start + end) / 2;                ListNode* leftList = mergeKListsCore(lists, start, middle);        ListNode* rightList = mergeKListsCore(lists, middle + 1, end);                if(leftList == NULL)            return rightList;        if(rightList == NULL)            return leftList;                ListNode* head = NULL;        ListNode* index = NULL;                ListNode* indexA = leftList;        ListNode* indexB = rightList;                while(indexA && indexB)        {            if(indexA->val < indexB->val)            {                if(head == NULL)                {                    head = indexA;                    index = head;                }                else                {                    index->next = indexA;                    index = index->next;                }                indexA = indexA->next;            }            else            {                if(head == NULL)                {                    head = indexB;                    index = head;                }                else                {                    index->next = indexB;                    index = index->next;                }                indexB = indexB->next;            }        }                index->next = (indexA == NULL ? indexB : indexA);                return head;    }


0 0