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
本文来自博客园,作者:WindMay,转载请注明原文链接:https://www.cnblogs.com/stephenxiong001/p/18379937