首页 > 其他 > 详细

23. Merge k Sorted Lists

时间:2018-01-23 12:47:58      阅读:234      评论:0      收藏:0      [点我收藏+]

欢迎fork and star:Nowcoder-Repository-github

23. Merge k Sorted Lists

题目

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

解析

  • 本题解题思路很多
  • 使用堆,分治,归并等
class Solution_23 {
public:
    struct CompareListNode
    {
        bool operator()(ListNode* a, ListNode* b)
        {
            return a->val > b->val;
        }
    };
    
    ListNode* mergeKLists(vector<ListNode*>& lists) {

        ListNode* head = new ListNode(0);
        ListNode* cur = head;
        priority_queue<ListNode*, vector<ListNode*>,CompareListNode> head_que; //元素是struct,class时,比较函数也要用对应的类型  //对于算法类型的函数调用sort();cmp使用函数即可
        for (int i = 0; i < lists.size();i++)
        {
            if (lists[i]) //非空入堆
            {
                head_que.push(lists[i]); //建立堆
            }
        }

        while (head_que.size()>0)
        {
            ListNode* temp = head_que.top(); //取堆顶元素
            head_que.pop();
            cur->next = temp;
            cur = cur->next;

            if (temp->next)
            {
                head_que.push(temp->next);
            }
        }
        cur->next = NULL;
        return head->next;
    }
};

题目来源

23. Merge k Sorted Lists

原文:https://www.cnblogs.com/ranjiewen/p/8334980.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!