Merge k Sorted Lists -- leetcode
来源:互联网 发布:树熊网络登录 编辑:程序博客网 时间:2024/06/16 06:01
Merge k Sorted Lists
Merge k sorted 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: /** * use priority_queue class mycomparison { public: bool operator() (ListNode* lhs, ListNode* rhs) { return (lhs->val > rhs->val); } }; ListNode *mergeKLists(vector<ListNode*> &lists) { priority_queue<ListNode*, vector<ListNode *>, mycomparison> queue; for(int i = 0; i < lists.size(); i++){ if(lists[i] != NULL) queue.push(lists[i]); } ListNode* head =NULL; ListNode* prev = NULL; while(!queue.empty()) { ListNode* tmp = queue.top(); queue.pop(); if(!prev) { head = tmp; prev = tmp; } else { prev->next= tmp; prev = tmp; } if(tmp->next) queue.push(tmp->next); } return head; } */ //use divide and conquer algorithm //merge two list ListNode* Merge(ListNode* list1, ListNode* list2) { ListNode* head = NULL; if(list1 == NULL) return list2; if(list2 == NULL) return list1; if(list1->val < list2->val){ head = list1; head->next = Merge(list1->next, list2); } else{ head = list2; head->next = Merge(list1, list2->next); } return head; } ListNode* MergeCore(vector<ListNode*> &lists, int left, int right) { if(left < right) { int mid = (right+left)/2; return Merge(MergeCore(lists, left, mid), MergeCore(lists, mid+1, right)); } else if(left == right) return lists[left]; return NULL; } ListNode *mergeKLists(vector<ListNode*> &lists) { if(lists.size() <= 0) return NULL; return MergeCore(lists, 0, lists.size()-1); }};
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
- git tag
- 链表读写文件
- 这个项目,涉及到的知识挺广泛的哦
- oracle 异常捕获
- js中的startWith、endWith、trim方法
- Merge k Sorted Lists -- leetcode
- Codeforces Round #278 (Div. 2) C
- Android中文API(136) —— GeoCoder
- 在 Emacs 里面使用 Cscope
- Jsoup入门:解析html 抽取数据
- HOWTO do Linux kernel development - take 3 (中文版)
- Sharepoint 2013 解决刷新 ExceBe careful. this workbook contains one or more queries that might be unsafe
- HTML5
- 实验三:顺序队列的实现