合并k个排序链表-LintCode
来源:互联网 发布:g92内螺纹编程实例 编辑:程序博客网 时间:2024/05/29 05:55
合并k个排序链表,并且返回合并后的排序链表。尝试分析和描述其复杂度。
样例:
给出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;}
阅读全文
0 0
- 合并k个排序链表,lintcode
- lintcode--合并k个排序链表
- 合并k个排序链表-LintCode
- lintcode -合并k个排序链表
- LintCode--合并k个排序链表
- lintcode 合并k个排序链表
- lintcode-合并k个排序链表-104
- Google/LintCode:M-合并k个排序链表
- [LintCode 104] 合并k个排序链表(Python)
- LintCode-分治-合并k个排序链表
- [LintCode]104.合并k个排序链表
- lintcode merge-k-sorted-lists 合并k个排序链表
- 题目:合并k个排序链表
- 合并k个排序链表
- 合并k个排序链表
- 合并k个排序链表
- 合并k个排序链表
- 合并k个排序链表
- 设置
- jsp相册管理小项目
- Spring data jpa 方法命名规则
- lintcode 最大子数组(Maximum Subarray )(Java)
- js
- 合并k个排序链表-LintCode
- AngularJS $http模块POST请求,传递参数为数组或者对象时
- setInterval()
- Principle for Mac 2.1.7 简体中文完美汉化包 原型设计工具
- 从菜鸟到入门(二)- 协同开发
- 个人记录-css重置表
- 学习python之积累别人的好东西
- Eyepetizer-in-Kotlin:一款简约的小视频app,带你走进kotlin
- 《reinforcement learning:an introduction》第三章《Finite Markov Decision Processes》总结