leetcode_023 Merge k Sorted Lists
来源:互联网 发布:预算报价软件 编辑:程序博客网 时间:2024/05/20 15:37
题目分析:
- 合并k个已经排好序的链表为一个有序链表。
解题思路:
递归实现
利用递归思想,依次两两合并一个有序链表,直到合并为一个链表为止。
实现程序
//合并两个有序单链表ListNode *mergeTwoLists(ListNode *l1, ListNode *l2){ ListNode *head = (ListNode *)malloc(sizeof(ListNode)); head->val = -1; head->next = NULL; ListNode *temp = head; ListNode *p = l1, *q = l2; while(p != NULL && q != NULL) // 遍历两个链表进行合并 { if (p->val <= q->val) { temp->next = p; temp = temp->next; p = p->next; } else if (p->val > q->val) { temp->next = q; temp = temp->next; q = q->next; } } if (p != NULL) { temp->next = p; } else if (q != NULL) { temp->next = q; } return head->next; } //合并k个有序的单链表ListNode *mergeKLists(vector<ListNode *> &lists){ if (lists.size() == 0) // 处理特殊情况 return NULL; if (lists.size() == 1) return lists[0]; vector<ListNode *> newLists; int start = 0; if (lists.size() % 2 != 0) // 处理链表为奇数情况 { newLists.push_back(lists[0]); start++; } for (int i = start; i < lists.size(); i += 2) // 两两合并链表 { ListNode *temp = mergeTwoLists(lists[i], lists[i + 1]); newLists.push_back(temp); } return mergeKLists(newLists); // 递归进行合并 }
0 0
- leetcode_023 Merge k Sorted Lists
- 2017-09-11 LeetCode_023 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
- 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
- Merge k Sorted Lists
- mongoDB——read&write操作
- 杭电5640 King's Cake
- python勿使用mutable值作为默认参数
- notePad++快捷键用法
- centos忘记root密码,重新设置的方法
- leetcode_023 Merge k Sorted Lists
- java项目——提升网站性能之java模板引擎beetl
- 网络基础:子网掩码划分2
- 如何写出正确的二分查找?
- 树、二叉树、森林
- 开始运行、开始运行不调试区别
- 求和公式的应用
- HDOJ 1814 Peaceful Commissiont
- 安装使用jupyter(原来的Ipython notebook)