合并k个排序链表-LintCode
2017-07-12 15:11
260 查看
合并k个排序链表,并且返回合并后的排序链表。尝试分析和描述其复杂度。
样例:
给出3个排序链表[2->4->null,null,-1->null],返回 -1->2->4->null
.h
.cpp
样例:
给出3个排序链表[2->4->null,null,-1->null],返回 -1->2->4->null
.h
#ifndef C104_H #define C104_H #include<iostream> #include<vector> using namespace std; class ListNode{ public: int val; ListNode *next; ListNode(int val){ this->val = val; this->next = NULL; } }; class Solution { public: /** * @param lists: a list of ListNode * @return: The head of one sorted list. */ ListNode *mergeKLists(vector<ListNode *> &lists) { // write your code here int len = lists.size(); for (int i = 0; i < len - 1; ++i) { lists[i + 1] = merge(lists[i], lists[i + 1]); } return lists[len - 1]; } ListNode *merge(ListNode *head1, ListNode *head2) { ListNode *p = head1, *q = head2; ListNode *node = new ListNode(0); ListNode *pn = node; while (p != NULL||q != NULL) { if (p != NULL&&q != NULL) { if (p->val <= q->val) { pn->next = p; pn = pn->next; p = p->next; } else { pn->next = q; pn = pn->next; q = q->next; } } else if (p != NULL&&q == NULL) { pn->next = p; pn = pn->next; p = p->next; } else { pn->next = q; pn = pn->next; q = q->next; } } return node->next; } }; #endif
.cpp
#include"c104.h" int main() { ListNode *p1 = new ListNode(2); p1->next = new ListNode(4); ListNode *p2 = new ListNode(3); p2->next = new ListNode(5); ListNode *p3 = new ListNode(6); p3->next = new ListNode(7); ListNode *p4 = new ListNode(1); p4->next = new ListNode(10); vector<ListNode*> v; v.push_back(p1); v.push_back(p2); v.push_back(p3); v.push_back(p4); Solution s; ListNode *p = s.mergeKLists(v); while (p != NULL) { cout << p->val << " "; p = p->next; } cout << endl; return 0; }
相关文章推荐
- LintCode-分治-合并k个排序链表
- lintcode -合并k个排序链表
- lintcode-104-合并k个排序链表
- lintcode 合并k个排序链表
- lintcode--合并k个排序链表
- 合并k个排序链表,lintcode
- [LintCode 104] 合并k个排序链表(Python)
- lintcode-合并k个排序链表-104
- 题目:合并k个排序链表
- lintcode——合并两个排序链表
- [Leetcode] Merge k sorted lists 合并k个已排序的链表
- 合并k个排序链表
- 合并k个已排序的链表
- Google/LintCode:M-合并k个排序链表
- 104. 合并k个排序链表
- [LintCode]165.合并两个排序链表
- leetcode 23. Merge k Sorted Lists 合并k个排序链表 优先级队列
- 合并两个排序链表-LintCode
- LintCode 合并两个排序链表
- LintCode-合并两个排序链表