LeetCode-23. Merge k Sorted Lists
来源:互联网 发布:诱导支付自动赚钱源码 编辑:程序博客网 时间:2024/06/10 20:05
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
K个有序链表保存在vector中,将它们连接成一个有序链表,返回。分析复杂度。
有两种方法:分治法和使用最小堆数据结构,目前只给出第一种,后一种以后再加上。
将K个链表分成两块,如总共6个链表,分别是1、2、3、4、5、6,则1、2、3为一组,4、5、6为一组,1和4合并构成新的1,2和5合并构成新的2,3和6合并构成新的3,然后循环直到变成一个链表。
所以这里需要之前做过的merge two sorted lists的函数。复杂度O(logN),这是看网上说的,我目前还不太会算。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *mergeTwoLists(ListNode *l1,ListNode *l2) { ListNode *mylist=new ListNode(0); ListNode *cur=mylist; while(l1&&l2){ if(l1->val<l2->val){ cur->next=l1; l1=l1->next; }else{ cur->next=l2; l2=l2->next; } cur=cur->next; } if(l1) cur->next=l1; if(l2) cur->next=l2; return mylist->next; } ListNode *mergeKLists(vector<ListNode *> &lists) { int n=lists.size(); if(n==0) return NULL; while(n>1){ int k=(n+1)/2; for(int i=0;i<n/2;++i) lists[i]=mergeTwoLists(lists[i],lists[i+k]); n=k; } return lists[0]; }};
阅读全文
0 0
- leetcode 23. LeetCode 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
- [leetcode] 23.Merge k Sorted Lists
- Leetcode-23.Merge k Sorted Lists
- [Leetcode]23. Merge k Sorted Lists @python
- 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
- LeetCode 23. Merge k Sorted Lists
- LeetCode-23.Merge k Sorted Lists
- Leetcode 23. Merge k Sorted Lists
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- simple linear regression详解
- C语言编程
- USB枚举过程
- kmp入门--kmp运用
- LeetCode-23. Merge k Sorted Lists
- 机器学习该怎么入门?
- 背包问题系列--"0-1背包问题"
- x86 64 内核堆栈
- react-native 新项目bundling failed,TransformError:babel-preset-react-native组件错误
- java面向对象的三大特征:封装,继承,多态
- 查看远程服务端口号
- 希尔排序
- 输出单层节点