分治法
来源:互联网 发布:程序员面试穿什么 编辑:程序博客网 时间:2024/06/15 04:03
一,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: ListNode *merge(ListNode *list1, ListNode *list2){ ListNode *p1, *p2, *head, *pre; p1 = list1; p2 = list2; head = new ListNode(-1); head->next = NULL; pre = head; while(p1 != NULL && p2 != NULL){ if(p1->val < p2->val){ pre->next = p1; pre = p1; p1 = p1->next; } else { pre->next = p2; pre = p2; p2 = p2->next; } } pre->next = NULL; if(p1 != NULL){ pre->next = p1; } if(p2 != NULL){ pre->next = p2; } return head->next; } /* 函数的返回值是一个指针,指向一个单链表,这个单链表是由下标从l到r的单链表融合而成的 */ ListNode *getList(int l, int r, vector<ListNode*> &lists) { if(l == r){ return lists[l]; } if(l < r){ int mid = (l + r) / 2; ListNode *left = getList(l, mid, lists); ListNode *right = getList(mid + 1, r, lists); return merge(left, right); } return NULL; } ListNode* mergeKLists(vector<ListNode*>& lists) { return getList(0, lists.size() - 1, lists); }};
阅读全文
0 0
- 分治法
- 分治法
- 分治法
- 分治法
- 分治法
- 分治法
- 分治法
- 分治法
- 分治法
- 分治法
- 分治法
- 分治法
- 分治法
- 分治法
- 分治法
- 分治法
- 分治法
- 分治法
- 解决Android Studio连接不上逍遥模拟器的问题
- MongoDB Remove函数的3个常见用法
- 机器学习面试知识点总结
- 一个实例让你彻底明白Activity的4种启动模式
- Linux Shell 编程 [精华]
- 分治法
- ajax post json
- activiti流程运行过程代码走读
- [springBoot系列]--springBoot注解大全
- Apache —— v-host配置
- POJ 3268 Silver Cow Party
- .NET相关的获取硬盘物理序列号的方法
- Android中沉浸式透明状态栏和导航栏的终极解决方案
- websocket 利用json 传递多个参数