【LeetCode】Merge k Sorted Lists
来源:互联网 发布:网络新媒体专业 编辑:程序博客网 时间:2024/05/01 03:24
Merge k Sorted Lists
Total Accepted: 13489 Total Submissions: 61228 My Submissions
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
【解题思路】
1、参考Merge Two Sorted Lists,依次归并,每个节点都至少需要扫描一次,很耗时间。
2、参考地址LeetCode:Merge k Sorted Lists,分析的很详细。
这里采取了第二种方法。后续有时间会更新内容。
Total Accepted: 13489 Total Submissions: 61228 My Submissions
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
【解题思路】
1、参考Merge Two Sorted Lists,依次归并,每个节点都至少需要扫描一次,很耗时间。
2、参考地址LeetCode:Merge k Sorted Lists,分析的很详细。
这里采取了第二种方法。后续有时间会更新内容。
Java AC 516ms
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { public ListNode mergeKLists(ArrayList<ListNode> lists) {if (lists == null || lists.size() == 0) {return null;}int n = lists.size();while (n > 1) {int k = (n + 1) / 2;for (int i = 0; i < n / 2; i++) {lists.set(i, mergeTwoLists(lists.get(i), lists.get(i + k)));}n = k;}return lists.get(0);}public ListNode mergeTwoLists(ListNode l1, ListNode l2) {ListNode node = new ListNode(0);ListNode point = node;while (l1 != null && l2 != null) {if (l1.val > l2.val) {point.next = new ListNode(l2.val);point = point.next;l2 = l2.next;} else {point.next = new ListNode(l1.val);point = point.next;l1 = l1.next;}}while (l1 != null) {point.next = new ListNode(l1.val);point = point.next;l1 = l1.next;}while (l2 != null) {point.next = new ListNode(l2.val);point = point.next;l2 = l2.next;}return node.next;}}Python AC 1116ms
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = None class Solution: # @param a list of ListNode # @return a ListNode def mergeKLists(self, lists): if lists is None or len(lists) == 0: return None n = len(lists) while n > 1: k = (n + 1) / 2 for i in range(n/2): lists[i] = self.mergeTwoLists(lists[i], lists[i+k]) n = k return lists[0] def mergeTwoLists(self, l1, l2): node = ListNode(0) point = node while l1 is not None and l2 is not None: if l1.val > l2.val: point.next = ListNode(l2.val) l2 = l2.next else: point.next = ListNode(l1.val) l1 = l1.next point = point.next while l1 is not None: point.next = ListNode(l1.val) point = point.next l1 = l1.next while l2 is not None: point.next = ListNode(l2.val) point = point.next l2 = l2.next return node.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
- 1153. Word Reversal
- 如何删除访问局域网共享时所保存的用户名及密码
- R: 循环语句中warning()的显示问题
- 昆虫繁殖
- 算法之旅——二分查找
- 【LeetCode】Merge k Sorted Lists
- 儿童业态放公司梵蒂冈仿盛大
- Cocos2d-x中移植到Android真机上屏幕方向设置
- css代码是放在html代码的哪个位置
- vim简明教程
- 解决FTP上传时报未能解析远程名称或未能解析域名错误方
- x86下的原子操作实现
- 职场35岁现象:迄今我看过最好的关于职业规划的文章
- 动态申请二维数组