Merge K Sorted Lists (Leetcode 23)
DFS gives TLE. Strictly use Divide and Conquer for this problem
Problem Link: https://leetcode.com/problems/merge-k-sorted-lists/
class Solution:
def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:
def recursion(lists):
n=len(lists)
if(n==0):
return None
if(n==1):
return lists[0]
mid=n//2
list1=recursion(lists[:mid])
list2=recursion(lists[mid:])
newlist=ListNode(-1)
curr=newlist
curr1=list1
curr2=list2
while(curr1 is not None and curr2 is not None):
if(curr1.val <= curr2.val):
curr.next=curr1
curr1=curr1.next
curr=curr.next
else:
curr.next=curr2
curr2=curr2.next
curr=curr.next
if(curr1 is not None):
curr.next=curr1
if(curr2 is not None):
curr.next=curr2
return newlist.next
return recursion(lists)
Last updated