zoukankan      html  css  js  c++  java
  • [LeetCode] 23

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

    /**
    * 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) {
        if (lists.empty()) {
          return nullptr;
        }
        auto comp_func = [](ListNode* a, ListNode* b){ return (a->val >= b->val);};
        vector<ListNode*> heap;
        for (auto node : lists) {
          if (node) {
            heap.emplace_back(node);
          }
        }
        ListNode head_node(-1);
        ListNode *head = &head_node;
        make_heap(heap.begin(), heap.end(), comp_func);

        while (!heap.empty()) {
          pop_heap(heap.begin(), heap.end(), comp_func);
          auto &node = heap.back();
          heap.pop_back();
          head->next = node;
          head = node;
          if (node->next) {
            heap.emplace_back(node->next);
            push_heap(heap.begin(), heap.end(), comp_func);
          }
        }
        return head_node.next;
      }
    };

  • 相关阅读:
    拆分跨天的时间数据
    模板
    更换数据库服务器迁移步骤
    缺失索引
    flex布局解说和属性
    Vuejs中关于computed、methods、watch,mounted的区别
    皮囊
    回家
    江苏旅游计划
    重写原生alert,弹出层过一会就消失
  • 原文地址:https://www.cnblogs.com/shoemaker/p/4769379.html
Copyright © 2011-2022 走看看