leetcode: Merge k Sorted Lists
来源:互联网 发布:查询系统端口 编辑:程序博客网 时间:2024/05/13 06:32
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
多路链表归并,复杂度O(mn logk)
/** * 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) { ListNode *res = _mergeKLists( lists, 0, lists.size() - 1); return res; } ListNode *_mergeKLists( vector< ListNode *> &lists, int i, int j){ if( i == j) return lists[i]; else if( i > j) return NULL; else if( i + 1 == j){ ListNode *res = mergeList( lists[i], lists[j]); return res; } else{ int mid = ( i + j) >> 1; ListNode *p = _mergeKLists( lists, i, mid); ListNode *q = _mergeKLists( lists, mid+1, j); ListNode *res = mergeList( p, q); return res; } } ListNode *mergeList( ListNode *p, ListNode *q){ ListNode dummy(-1); ListNode *cur = &dummy; while( p && q){ if( p->val < q->val){ cur->next = p; p = p->next; } else{ cur->next = q; q = q->next; } cur = cur->next; } cur->next = p ? p : q; return dummy.next; }};
0 0
- LeetCode: Merge k Sorted Lists
- LeetCode Merge k Sorted Lists
- LeetCode: Merge k Sorted Lists
- [Leetcode] Merge k Sorted Lists
- [Leetcode] Merge k Sorted Lists
- [Leetcode] Merge K sorted lists
- [LeetCode]Merge k Sorted Lists
- [LeetCode] Merge k Sorted Lists
- LeetCode-Merge k Sorted Lists
- LeetCode: Merge k Sorted Lists
- LeetCode - Merge k Sorted Lists
- LeetCode | Merge k Sorted Lists
- 【leetcode】Merge k Sorted Lists
- Leetcode: Merge k Sorted Lists
- <Leetcode>Merge k Sorted Lists
- [LeetCode] Merge K sorted lists
- [LeetCode] Merge k Sorted Lists
- 【Leetcode】Merge k Sorted Lists
- USCOJ 1231 Triangles(HUST 校赛题)
- ocp-047 delete
- 用备份进行Active Directory的灾难重建:Active Directory系列之三
- windows下编译openssl源码
- 部署第一个域:Active Directory系列之二
- leetcode: Merge k Sorted Lists
- poj 2786:Pell数列
- 为什么我们需要域?Active Directory系列之一
- 灵活选择抛出异常
- 用PXE方法从裸机批量推Oracle11gR2 RAC成套环境
- spring中注解属性scope的prototype是什么意思?
- eclipse 代码清理 代码格式化 代码注释
- leetcode 149 Longest Substring Without Repeating Characters
- fatal error C1083 无法打开预编译头及解决方案