首页 > 代码库 > 【leetcode】Merge k Sorted Lists
【leetcode】Merge k Sorted Lists
Merge k Sorted Lists
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
采用优先队列priority_queue
把ListNode放入优先队列中,弹出最小指后,如果该ListNode有下一个元素,则把下一个元素放入到队列中
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 10 struct cmp11 {12 bool operator()(ListNode *a,ListNode *b)13 {14 //升序,每次优先队列返回最小的15 return a->val>b->val;16 }17 };18 19 class Solution {20 21 22 public:23 ListNode *mergeKLists(vector<ListNode *> &lists) {24 25 priority_queue<ListNode *,vector<ListNode*>,cmp> q;26 27 for(int i=0;i<lists.size();i++)28 {29 if(lists[i]!=NULL) q.push(lists[i]);30 }31 32 ListNode *front=new ListNode(0);33 ListNode *result;34 result=front;35 36 while(!q.empty())37 {38 ListNode *tmp=q.top();39 front->next=tmp;40 if(tmp->next!=NULL) q.push(tmp->next);41 q.pop();42 front=tmp;43 }44 45 front->next=NULL;46 47 ListNode *tmp=result;48 result=result->next;49 delete tmp;50 return result;51 52 }53 };
【leetcode】Merge k Sorted Lists
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。