LeetCode OJ:Merge k Sorted Lists

来源:互联网 发布:阿里云域名管理在哪 编辑:程序博客网 时间:2024/06/06 05:41

Merge k Sorted Lists

 

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

算法思想:

每次从lists中找一个值最小的加到链中,最小的那个项指向它的下一个节点

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode *mergeKLists(vector<ListNode *> &lists) {        ListNode *nh=new ListNode(0);        ListNode *pre=nh;        while(true){            int minval=INT_MAX;            int index;            for(int i=0;i<lists.size();i++){                if(lists[i]&&lists[i]->val<minval){                    index=i;                    minval=lists[i]->val;                }            }            if(minval==INT_MAX)break;            pre->next=lists[index];            pre=pre->next;            lists[index]=lists[index]->next;        }        pre->next=NULL;        return nh->next;    }};



0 0