LeetCode 22. Merge k Sorted Lists
2014-06-16 04:12
435 查看
用一个最小堆盛放所有有序链表的头结点即可。
复杂度O(nlogm) -- n为结点总数,m为vector.size()
代码:
class Solution
{
public:
struct cmp
{
bool operator () (const ListNode* a, const ListNode* b)
{
return a->val > b->val;
}
};
ListNode *mergeKLists(vector<ListNode *> &lists)
{
ListNode *head=NULL, *cur=NULL;
priority_queue<ListNode*, vector<ListNode*>, cmp> ss;
for (auto it = lists.begin(); it != lists.end(); ++ it)
{
if (*it != NULL)
{
ss.push(*it);
}
}
while(ss.empty() == false)
{
auto top = ss.top();
if (head == NULL)
{
head = cur = top;
} else
{
cur->next = top;
cur = cur->next;
}
ss.pop();
if (top->next != NULL)
{
ss.push(top->next);
}
}
return head;
}
};
复杂度O(nlogm) -- n为结点总数,m为vector.size()
代码:
class Solution
{
public:
struct cmp
{
bool operator () (const ListNode* a, const ListNode* b)
{
return a->val > b->val;
}
};
ListNode *mergeKLists(vector<ListNode *> &lists)
{
ListNode *head=NULL, *cur=NULL;
priority_queue<ListNode*, vector<ListNode*>, cmp> ss;
for (auto it = lists.begin(); it != lists.end(); ++ it)
{
if (*it != NULL)
{
ss.push(*it);
}
}
while(ss.empty() == false)
{
auto top = ss.top();
if (head == NULL)
{
head = cur = top;
} else
{
cur->next = top;
cur = cur->next;
}
ss.pop();
if (top->next != NULL)
{
ss.push(top->next);
}
}
return head;
}
};
相关文章推荐
- Leetcode-23. Merge k Sorted Lists
- leetcode21. Merge Two Sorted Lists
- Leetcode : 23. Merge k Sorted Lists
- 22. Merge k Sorted Lists Leetcode Python
- LeetCode --- 23. Merge k Sorted Lists
- python写算法题:leetcode: 23. Merge k Sorted Lists
- Leetcode题解-21. Merge Two Sorted Lists
- 【LeetCode题解】21.Merge Two Sorted Lists
- LeetCode21. Merge Two Sorted Lists
- leetcode21. Merge Two Sorted Lists
- [leetcode] 23. Merge k Sorted Lists
- LeetCode 23. Merge k Sorted Lists
- LeetCode 23. Merge k Sorted Lists
- LeetCode 23. Merge k Sorted Lists
- LeetCode题解:Merge 2 Sorted Lists
- leetcode(10)21. Merge Two Sorted Lists
- [LeetCode] Merge k Sorted Lists
- [LeetCode] 21. Merge Two Sorted Lists
- leetcode No23. Merge k Sorted Lists
- leetcode题解-21. Merge Two Sorted Lists