示例#1
0
#         self.next = next

from ListNode import ListNode


class Solution:
    def swapPairs(self, head: ListNode) -> ListNode:
        pre = dummy = ListNode(-1, head)
        while pre.next and pre.next.next:
            # tmp = pre.next
            # pre.next = pre.next.next
            # tmp.next = pre.next.next
            # pre.next.next = tmp
            # pre = tmp
            pre.next, pre.next.next, pre.next.next.next, pre =\
                pre.next.next, pre.next, pre.next.next.next, pre.next
        return dummy.next

    def swapPairs2(self, head: ListNode) -> ListNode:
        pre = dummy = ListNode(-1,head)
        while (p1:=pre.next) and (p2:=pre.next.next):
            pre.next, p2.next, p1.next, pre = p2, p1, p2.next, p1
        return dummy.next


head = ListNode(1)
head.nextItm(2).nextItm(3).nextItm(4)
obj = Solution()

print(obj.swapPairs2(head))
示例#2
0
        return recur(head, None)

    # put val into array
    def sortedListToBST2(self, head: ListNode) -> TreeNode:
        if not head:
            return None
        # put linked list into array
        array = []
        pos = head
        while pos:
            array.append(pos.val)
            pos = pos.next

        def transfer(beg: int, end: int) -> TreeNode:
            if beg > end:
                return None
            mid = (beg + end) >> 1
            root = TreeNode(array[mid])
            root.left = transfer(beg, mid - 1)
            root.right = transfer(mid + 1, end)
            return root

        return transfer(0, len(array) - 1)


head = ListNode(-10)
head.nextItm(-3).nextItm(0).nextItm(5).nextItm(9)
so = Solution()
so.sortedListToBST(head)
示例#3
0
        heap = [(head.val, idx, head) for idx, head in enumerate(lists)
                if head]
        heapq.heapify(heap)

        while heap:
            _, idx, node = heap[0]
            cur.next = node
            cur = cur.next
            if node.next:
                heapq.heapreplace(heap, (node.next.val, idx, node.next))
            else:
                heapq.heappop(heap)

        cur.next = None
        return dummy.next


lists = []
node1 = ListNode(1)
node1.nextItm(4).nextItm(5)
lists.append(node1)
node2 = ListNode(1)
node2.nextItm(3).nextItm(4)
lists.append(node2)
node3 = ListNode(2)
node3.nextItm(6)
lists.append(node3)

obj = Solution()
print(obj.mergeKLists(lists))
示例#4
0
                tail.next = next.next
                pre.next = next
                next.next = cur
        return dummy.next

    def insertionSortList2(self, head: ListNode) -> ListNode:
        if not head:
            return head
        dummy = ListNode(-1)
        dummy.next = head
        tail = head
        while tail.next:
            # max
            if tail.val < tail.next.val:
                tail = tail.next
                continue
            cur = tail.next
            tail.next = cur.next
            p = dummy
            while p.next.val < cur.val:
                p = p.next
            # insert
            p.next, cur.next = cur, p.next
        return dummy.next


head = ListNode(-1)
head.nextItm(5).nextItm(3).nextItm(4).nextItm(0)
so = Solution()
so.insertionSortList2(head)