Study Plan For Algorithms - Part12

1.合并 K 个升序链表
给定一个链表数组,每个链表都已经按升序排列。请将所有链表合并到一个升序链表中,返回合并后的链表。

class Solution:
    def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:
        import heapq

        dummy = ListNode()
        curr = dummy
        heap = []

        for i, lst in enumerate(lists):
            if lst:
                heapq.heappush(heap, (lst.val, i))

        while heap:
            val, index = heapq.heappop(heap)
            curr.next = ListNode(val)
            curr = curr.next

            if lists[index].next:
                lists[index] = lists[index].next
                heapq.heappush(heap, (lists[index].val, index))

        return dummy.next

2. 两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。

class Solution:
    def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:
        dummy = ListNode(0)
        dummy.next = head
        prev = dummy

        while head and head.next:
            first = head
            second = head.next

            prev.next = second
            first.next = second.next
            second.next = first

            prev = first
            head = first.next

        return dummy.next        
posted @ 2024-08-26 07:00  WindMay  阅读(4)  评论(0编辑  收藏  举报