leetcode编程记录6 #23 Merge k Sorted Lists
来源:互联网 发布:淘宝上搜不到二手钢琴 编辑:程序博客网 时间:2024/05/21 09:04
leetcode编程记录6 #23 Merge k Sorted Lists
标签(空格分隔): leetcode
这次是一道关于合并k个有序链表的题目,题目如下:
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
题目理解与分析:
题目要求我们合并k个有序的链表。而我们并不知道这个k个链表是否为空,所以我们首先要删去这k个链表中为空的链表,最后再来处理剩余的几个链表。而对于剩下的几个链表则可以从每个链表的第一个元素开始寻找最小的元素,来依次构造一个最终结果的链表。
这样的话,假设有k个链表,每个链表平均长度为m的话,复杂度则是O((k*m)^2)的。
代码如下:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* mergeKLists(vector<ListNode*>& lists) { for (auto i = 0; i < lists.size(); i++) { if(lists[i] == NULL) { lists.erase(lists.begin() + i); i = 0; } } if (lists.size() == 0) { return NULL; } if (lists.size() == 1) { return lists[0]; } ListNode* result = new ListNode(lists[0]->val); ListNode* current = result; for (; lists.size() > 1; ) { int index = 0; for (int i = 1; i < lists.size(); i++) { if (lists[i]->val < lists[index]->val) { index = i; } } current->next = new ListNode(lists[index]->val); current = current->next; lists[index] = lists[index]->next; for (auto i = lists.begin(); i != lists.end(); i++) { if(*i == NULL) { lists.erase(i); break; } } } current->next = lists[0]; result = result->next; return result; }};
阅读全文
0 0
- leetcode编程记录6 #23 Merge k Sorted Lists
- LeetCode(23)Merge K Sorted Lists
- [leetcode 23] Merge k Sorted Lists
- [leetcode]23 Merge k Sorted Lists
- [#23 leetcode]Merge k Sorted Lists
- LeetCode 23 Merge k Sorted Lists
- leetcode 23 Merge k Sorted Lists
- [Leetcode 23, Hard] Merge k Sorted Lists
- Leetcode 23 Merge k Sorted Lists
- LeetCode 23 - Merge k Sorted Lists
- LeetCode 23: Merge K Sorted Lists
- leetcode-23Merge k 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 23:Merge k Sorted Lists
- Leetcode #23 Merge k Sorted Lists
- MYSQL启动报错故障及解决
- 关于 make -j4
- 遇到Class path contains multiple SLF4J bindings.该如何解决?
- activiti实战五(我的流程)
- Unity富文本详解
- leetcode编程记录6 #23 Merge k Sorted Lists
- 【XSY2519】神经元 prufer序列 DP
- unity屏幕分辨率设置注意及代码
- Python-基于数据驱动模式的自动化测试框架搭建的的逐步实现(一)
- 自动化运维工具ansible的实践
- UIViewController添加UICollectionView控件顶端出现留白的解决办法
- 第二周java编程作业
- linq 多列分组取某列最大值
- 对linux进程的理解