leetcode 23 Merge k Sorted Lists
2015-04-12 17:09
357 查看
Merge k Sorted Lists
Merge k sorted
linked lists and return it as one sorted list. Analyze and describe its complexity.
可以通过leetcode 21的merge Two Lists来解决。
如果从头到尾依此合并,会超时。
改用分治法来调用。链表个数l>3时,mergeTwoLists(self.mergeKLists(lists[:l/2]),self.mergeKLists(lists[l/2:l]))
Merge k sorted
linked lists and return it as one sorted list. Analyze and describe its complexity.
可以通过leetcode 21的merge Two Lists来解决。
如果从头到尾依此合并,会超时。
改用分治法来调用。链表个数l>3时,mergeTwoLists(self.mergeKLists(lists[:l/2]),self.mergeKLists(lists[l/2:l]))
# Definition for singly-linked list. class ListNode: def __init__(self, x): self.val = x self.next = None class Solution: # @param two ListNodes # @return a ListNode def mergeTwoLists(self, l1, l2): if l1==None: return l2 if l2==None: return l1 if l1.val<=l2.val: head=l1 l1=l1.next else: head=l2 l2=l2.next p=head while l1 and l2: if l1.val<=l2.val: p.next=l1 p=p.next l1=l1.next else: p.next=l2 p=p.next l2=l2.next while l1: p.next=l1 p=p.next l1=l1.next while l2: p.next=l2 p=p.next l2=l2.next return head # @param a list of ListNode # @return a ListNode def mergeKLists1(self, lists): l=len(lists) if l==0: return None if l==1: return lists[0] head=self.mergeTwoLists(lists[0],lists[1]) for i in range(2,l): head=self.mergeTwoLists(head,lists[i]) return head # @param a list of ListNode # @return a ListNode def mergeKLists(self, lists): l=len(lists) if l==0: return None elif l==1: return lists[0] elif l==2: return self.mergeTwoLists(lists[0],lists[1]) else: return self.mergeTwoLists(self.mergeKLists(lists[:l/2]),self.mergeKLists(lists[l/2:l]))
相关文章推荐
- Leetcode 23 Merge k Sorted Lists
- [Leetcode 50] 23 Merge K Sorted Lists
- LeetCode 23 Merge k Sorted Lists (C,C++,Java,Python)
- LeetCode-23. Merge k Sorted Lists
- leetcode 23:Merge k Sorted Lists(15-10-10)
- leetcode题解c++ | 23. Merge k Sorted Lists
- 【Leetcode】23. Merge k Sorted Lists
- [#23 leetcode]Merge k Sorted Lists
- LeetCode 23. Merge k Sorted Lists 【hard】
- Leetcode 23. Merge k Sorted Lists (Hard) (cpp)
- LeetCode 23. Merge k Sorted Lists
- [Leetcode 23, Hard] Merge k Sorted Lists
- ( Leetcode 23 ) Merge k Sorted Lists
- LeetCode-23.Merge k Sorted Lists
- Leetcode 23. Merge k Sorted Lists
- 【leetcode】23. Merge k Sorted Lists
- LeetCode(23)--Merge k Sorted Lists
- Leetcode 23. Merge k Sorted Lists
- Leetcode23-Merge k Sorted Lists
- [Leetcode]_23 Merge k Sorted Lists