Leetcode 23. Merge k Sorted Lists

题目

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

分析

合并k个排序的链表,返回已排序的结果。
对K个链表依次遍历,找到最小值,然后放入结果链表中,最后K个链表没有元素的时候退出。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* mergeKLists(struct ListNode** lists, int listsSize) {
    struct ListNode *ans=NULL,*last;
    while(1)
    {
        int min=1000000,mink=-1;
        for(int i=0;i<listsSize;i++)
        {
            if(lists[i]!=NULL&&lists[i]->val<min)
            {
                min=lists[i]->val;
                mink=i;
            }
        }
        //printf("%d %d\n",min,mink);
        if(mink==-1)break;
        lists[mink]=lists[mink]->next;
        struct ListNode *temp=(struct ListNode *)malloc(sizeof(struct ListNode));
        temp->val=min;
        temp->next=NULL;
        if(ans==NULL)
        {
            ans=temp;
            last=ans;
        }
        else
        {
            last->next=temp;
            last=temp;
        }
    }
    return ans;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容