Merge k Sorted Lists
来源:互联网 发布:网络医疗是什么 编辑:程序博客网 时间:2024/06/06 03:46
/*排序问题:本题是将k个排好序的链表整合到一个链表中具体的做法为:首先进行两两合并,然后循环进行下去合并Merge k Sorted ListsMerge k sorted linked lists and return it as one sorted list.Analyze and describe its complexity.*/#include<iostream>#include<vector>using namespace std;struct ListNode{int val;ListNode *next;ListNode(int x) :val(x), next(nullptr) {}};class Solution{public:ListNode *init(vector<int>&vec) //链表的初始化{ListNode dummy(-1);ListNode *p = &dummy;for (int i = 0; i < vec.size(); i++, p = p->next){p->next = new ListNode(vec[i]);//重要}return dummy.next;}//merge k sorted listsListNode*merge_k(vector<ListNode *>& lists){if (lists.size() == 0) return nullptr;ListNode *p=lists[0];for (int i = 1; i < lists.size(); i++){p = merge_2(p, lists[i]);}return p;}//merge 2 listsListNode *merge_2(ListNode *list1, ListNode *list2){ListNode dummy(-1);ListNode *p = &dummy;for (; list1 != nullptr || list2 != nullptr; p = p->next)//判断条件为 或{int value1 = list1 == nullptr ? INT_MAX : list1->val;//当链表为空时,取最大值,即是转换到里一个链表int value2 = list2 == nullptr ? INT_MAX : list2->val;if (value1 > value2){p->next = list2;list2 = list2->next;}else{p->next = list1;list1 = list1->next;}}return dummy.next;}//printvoid print(ListNode * head){while (head != nullptr){cout << head->val << ",";head = head->next;}cout << endl;}};int main(){Solution s1;vector<int>v1{ 1, 2, 3, 4 };vector<int>v2{ 5, 6, 7 };vector<int>v3{ 8, 8, 9, 10 };ListNode *list1 = s1.init(v1);ListNode *list2 = s1.init(v2);ListNode *list3 = s1.init(v3);vector<ListNode*>vec1{list1,list2,list3};//s1.print(s1.init(v1));s1.print(s1.merge_k(vec1));system("pause");return 0;}
0 0
- Merge K Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge K Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge K sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- Merge k Sorted Lists
- openstack项目怎么进行单元测试
- 科目二考试技巧口诀
- SharedPreferences介绍与封装
- maven2不能下载jta-1.0.1B.jar的解决方法(手工安装):
- algrothm_最大公约数+最小公倍数?
- Merge k Sorted Lists
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
- qt下字符串形式与整型的转换
- zabbix server访问zabbix agent的10050端口不通的定位过程
- RFC3984: RTP Payload Format for H.264 Video(中文版)
- iOS开发判断iPhone型号
- 分布式高性能的若干问题
- 上线被拒,说是 分享路径不合适,分享了不改分享的东西
- MySql 下载安装使用。