【python-leetcode23-多路归并】合并k个排序链表
发布时间:2020-12-20 09:54:24 所属栏目:Python 来源:网络整理
导读:合并?k?个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入: [ ? 1-4-5, ? 1-3-4, ? 2-6 ] 输出: 1-1-2-3-4-4-5-6 ? 思路:每次两两合并,然后将合并的结果重新添加到列表中,直到只剩下一个链表。 # Definition for singly-linked l
合并?k?个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入: ? 思路:每次两两合并,然后将合并的结果重新添加到列表中,直到只剩下一个链表。 # Definition for singly-linked list. # class ListNode: def __init__(self,x): self.val = x self.next = None class Solution: def mergeKLists(self,lists: List[ListNode]) -> ListNode: while len(lists)>1: a=lists.pop() if len(lists)>0 else None b=lists.pop() None lists.insert(0,self.mergeTwoLists(a,b)) return None if len(lists)<1 lists[0] def mergeTwoLists(self,l1,l2): newHead=ListNode(0) t=newHead while l1 and l2: if l1.val<=l2.val: t.next=ListNode(l1.val) l1=l1.next : t.next=ListNode(l2.val) l2=l2.next t=t.next if l1: t.next=l1 l2: t.next=l2 return newHead.next ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |