Example #1
0
    def _r_mergeKLists(self, lists, start, end):
        if start >= end:
            return lists[start]
        mid = (start + end) // 2
        listnode1 = self._r_mergeKLists(lists, start, mid)
        listnode2 = self._r_mergeKLists(lists, mid + 1, end)
        return self._merge(listnode1, listnode2)

    def _mergeKLists(self, lists):
        length = len(lists)
        if length == 0:
            return None

        return self._r_mergeKLists(lists, 0, length - 1)


if __name__ == '__main__':
    obj = Solution()
    while True:
        k = int(input())
        lists = []
        for _ in range(k):
            nums_str = input().strip().split()
            nums = list(map(int, nums_str))
            list_node = list_to_list_node(nums)
            lists.append(list_node)
        head = obj._mergeKLists(lists)
        res = list_node_to_list(head)
        print(res)
Example #2
0
        if k % 2 == 0:
            k += 1
            head1.next = self._merge(head1.next, head2, k)
            return head1
        else:
            k += 1
            head2.next = self._merge(head1, head2.next, k)
            return head2

    def _reverse(self, head):
        pre = None
        cur = head
        while cur:
            next = cur.next
            cur.next = pre
            pre = cur
            cur = next
        return pre


if __name__ == '__main__':
    obj = Solution()
    while True:
        l1_str = input().strip()
        l1 = list(map(int, l1_str.split()))
        l1 = list_to_list_node(l1)
        # k = int(input().strip())
        res_node = obj.reorderList(l1)
        res = list_node_to_list(res_node)
        print(res)