C++: priority_queue
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 struct cmp { 10 bool operator()(ListNode *a, ListNode *b) { 11 return a->val > b->val; 12 } 13 }; 14 class Solution { 15 public: 16 ListNode *mergeKLists(vector<ListNode *> &lists) { 17 priority_queue<ListNode*, vector<ListNode*>, cmp> S; 18 if (lists.size() == 0) return NULL; 19 for (int i = 0; i < lists.size(); i++) { 20 if (lists[i]) S.push(lists[i]); 21 } 22 ListNode *ans = NULL; 23 ListNode *p = ans; 24 while (!S.empty()) { 25 ListNode *tmp = S.top(); 26 if (!ans) { 27 ans = tmp; 28 p = ans; 29 } 30 else { 31 p->next = tmp; 32 p = p->next; 33 } 34 if (!tmp->next) S.pop(); 35 else { 36 tmp = tmp->next; 37 S.pop(); 38 S.push(tmp); 39 } 40 } 41 return ans; 42 } 43 };
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。