23. Merge k Sorted Lists 合并K个有序链表

来源:互联网 发布:mac怎么删除abc输入法 编辑:程序博客网 时间:2024/05/22 10:39

https://leetcode.com/problems/merge-k-sorted-lists/


注意一点:小顶堆要重载>符号


/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    struct cmp{        bool operator()(const ListNode* a,const ListNode* b)const{            return a->val>b->val;        }    };    ListNode* mergeKLists(vector<ListNode*>& lists) {        priority_queue<ListNode*,vector<ListNode*>,cmp> pq;        int len=lists.size();        for(int i=0;i<len;i++){            if(lists[i]){                pq.push(lists[i]);            }        }        ListNode dummy(0);        ListNode* p=&dummy;        while(!pq.empty()){            ListNode* top=pq.top();            pq.pop();            p->next=top;            p=p->next;            if(top->next){                pq.push(top->next);            }        }        return dummy.next;    }};


0 0
原创粉丝点击