<23>——Merge k Sorted Lists
来源:互联网 发布:steam连不上网络 编辑:程序博客网 时间:2024/06/05 21:06
23、Merge k Sorted Lists
合并k个排序链表
合并k个排序链表,并且返回合并后的排序链表。尝试分析和描述其复杂度。
样例
给出3个排序链表[2->4->null,null,-1->null],返回 -1->2->4->null
分析:
也就是合并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) { if(lists.empty())return NULL; for(int i=1;i<lists.size();i++)//直接相加 lists[0]=mergeTwoLists(lists[0],lists[i]); return lists[0]; } ListNode* mergeTwoLists(ListNode* l1,ListNode* l2) {//递归形式 if(!l1)return l2; if(!l2)return l1; if(l1->val>l2->val) { l2->next=mergeTwoLists(l1,l2->next); return l2; } else { l1->next=mergeTwoLists(l1->next,l2); return l1; } }};
经典代码:
ListNode *mergeKLists(vector<ListNode *> &lists) { if(lists.empty()){ return nullptr; } while(lists.size() > 1){//归并形式,两两相加 lists.push_back(mergeTwoLists(lists[0], lists[1])); lists.erase(lists.begin()); lists.erase(lists.begin()); } return lists.front();}ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { if(l1 == nullptr){ return l2; } if(l2 == nullptr){ return l1; } if(l1->val <= l2->val){ l1->next = mergeTwoLists(l1->next, l2); return l1; } else{ l2->next = mergeTwoLists(l1, l2->next); return l2; }
阅读全文
0 0
- <23>——Merge k Sorted Lists
- LeetCode——Merge k Sorted Lists
- LeetCode——Merge k Sorted Lists
- Algorithms—23.Merge k Sorted Lists
- leetcode第23题——***Merge k Sorted Lists
- 23Merge k Sorted Lists
- #23 Merge k Sorted Lists
- 23Merge k Sorted Lists
- 【23】Merge k Sorted Lists
- 23-Merge k Sorted Lists
- 23 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
- HTML常用标签
- easyui Combotree默认选中第一项
- JS中AOP的实现和运用
- ie6_hack 图片显示问题
- Mabatis多表关联注意事项
- <23>——Merge k Sorted Lists
- matlab2c使用c++实现matlab函数系列教程-ceil函数
- html 初级讲解
- Ef框架使用 in 方法
- 字典序问题
- [3]565. Array Nesting(Java)
- android常用配置
- 通过css裁切图片为菱形图片
- Android常用权限和依赖