Example #1
0
 def __init__(self, nums):
     for i in range(len(nums)):
         num = nums[i]
         if self.__head is None:
             self.__tail = ListNode(num)
             self.__head = self.__tail
         else:
             self.__tail.next = ListNode(num)
             self.__tail = self.__tail.next
 def mergeKLists(self, lists):
     fakeHead = ListNode(0)
     curr = fakeHead
     heap = []
     for lst in lists:
         while lst:
             heapq.heappush(heap, lst.val)
             lst = lst.next
     while heap:
         curr.next = ListNode(heapq.heappop(heap))
         curr = curr.next
     return fakeHead.next
Example #3
0
 def deleteDuplicates(self, head):
     if head is None or head.next is None:
         return head
     fakeHead = ListNode(0)
     fakeHead.next = head
     curr = fakeHead
     while curr.next is not None:
         nextNode = curr.next
         if nextNode.next is not None and nextNode.next.val == nextNode.val:
             while nextNode.next is not None and nextNode.next.val == nextNode.val:
                 nextNode = nextNode.next
             curr.next = nextNode.next
         else:
             curr = curr.next
     return fakeHead.next
Example #4
0
 def deleteDuplicates(self, head):
     if (head is None) or (head.next is None):
         return head
     map = {}
     fakeHead = ListNode(0)
     fakeHead.next = head
     curr = fakeHead
     while curr.next is not None:
         if curr.next.val not in map:
             map[curr.next.val] = 1
             curr = curr.next
         else:
             keep = curr.next.next
             curr.next = keep
     return fakeHead.next
 def add_same_len(self,l1,l2):
     increase = 0
     fakeHead = ListNode(0)
     curr = fakeHead
     while (l1 is not None) and (l2 is not None):
         sum = l1.val + l2.val + increase
         if sum >= 10:
             increase = sum // 10
             value = sum % 10
         else:
             value = sum
             increase = 0
         curr.next = ListNode(value)
         curr = curr.next
         l1 = l1.next
         l2 = l2.next
     if increase == 1:
         curr.next = ListNode(1)
     return fakeHead.next
 def extend_list(self,l1,len):
     if len == 0:
         return l1
     curr = l1
     while (curr is not None) and (curr.next is not None):
         curr = curr.next
     for i in range(len):
         curr.next = ListNode(0)
         curr = curr.next
     return l1
 def mergeTwoLists(self, l1, l2):
     if l1 is None and l2 is None:
         return None
     elif l1 is None:
         return l2
     elif l2 is None:
         return l1
     else:
         fakeHead = ListNode(0)
         curr = fakeHead
         self.backTracking(curr, l1, l2)
         return fakeHead.next
 def mergeKLists(self, lists):
     fakeNode = ListNode(0)
     self.backTracking(lists, fakeNode)
     return fakeNode.next