【LeetCode】Merge k Sorted Lists
2014-04-22 19:23
288 查看
Merge k sorted
linked lists and return it as one sorted list. Analyze and describe its complexity.
思路:很简单,就是讲两个排序单链表合并即可,其实也可以是归并方式来做,都差不多。
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 *mergeList(ListNode *head1,ListNode *head2) { if(head1==NULL)return head2; if(head2==NULL)return head1; ListNode *head=NULL; if(head1->val>head2->val){ head=head2; head2=head2->next; }else{ head=head1; head1=head1->next; } head->next=NULL; ListNode *cur=head; while(head1!=NULL&&head2!=NULL){ if(head1->val>head2->val){ cur->next=head2; head2=head2->next; }else{ cur->next=head1; head1=head1->next; } cur=cur->next; } if(head1==NULL&&head2==NULL)return head; else if(head1==NULL)cur->next=head2; else cur->next=head1; return head; } ListNode *mergeKLists(vector<ListNode *> &lists) { int nsize=lists.size(); if(nsize==0)return NULL; ListNode *head1=lists[0]; if(nsize==1)return head1; for(int i=1;i<nsize;i++){ ListNode *head2=lists[i]; head1=mergeList(head1,head2); } return head1; } };
相关文章推荐
- <转>人名翻译规则
- 日语能力考试N2级核心词汇必备—接续词
- Oracle数据库案例整理-Oracle系统运行时故障-内存过少导致分配共享内存失败
- 关于fork 创建进程
- 张国祥老师应邀参加联创无锡“系统的力量”公益讲座
- JSP/Servlet 工作原理
- Oracle数据库案例整理-Oracle系统运行时故障-表空间所在的目录没有可用空间导致收集统计信息失败
- Ubuntu 12.04中文输入法的安装
- Monkeyrunner学习之五
- Libcurl使用OpenSSL编译出现undefined reference to `COMP_CTX_free'错误备忘
- protobuf文件嵌套结构实例
- 第二学期第八周项目1--实现复数类中的运算符重载
- 使用OpenCV进行相机标定(基于OpenCV2.4.3)
- C++ 之Boost 实用工具类及简单使用
- C#:依据目录填充树视图
- Time类中运算符重载的改造
- Oracle数据库案例整理-Oracle系统运行时故障-断电导致数据文件状态变为RECOVER
- 使用protobuf定义消息
- BackBone.js之Router
- mysql5.5.15配置主从数据库