Leetcode 23.合并K个升序链表


思路分析:
- 考虑使用二路归并排序算法
- 涉及到合并两个有序链表的问题
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution(object): def mergeTwoLists(self,lsta,lstb): #合并两个有序链表 if not lsta or not lstb: return lsta if lsta else lstb head=ListNode(-1) prev=head while lsta and lstb: if lsta.val<lstb.val: prev.next=lsta lsta=lsta.next else: prev.next=lstb lstb=lstb.next prev=prev.next prev.next=lsta if lsta else lstb return head.next def merge(self,lists,l,r): #归并排序 if (l==r): return lists[l] elif (l>r): return else: mid=(l+r)//2 return self.mergeTwoLists(self.merge(lists,l,mid),self.merge(lists,mid+1,r)) def mergeKLists(self, lists): """ :type lists: List[ListNode] 每个链表存储的是其头结点 :rtype: ListNode """ return self.merge(lists,0,len(lists)-1)

浙公网安备 33010602011771号