本文共 964 字,大约阅读时间需要 3 分钟。
先依次向后确定每个分组,对确定的分组用尾插法进行逆置,然后设置新的起点,重复上述过程即可
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def reverseKGroup(self, head, k): """ :type head: ListNode :type k: int :rtype: ListNode """ pre = ListNode(-1) tail = pre q = head while q is not None: #向后查找k个节点 n = k p = q while p is not None and n > 0: p = p.next n -= 1 #如果在查找k个节点的过程中遇到None,则说明 #后面的节点不够k个节点则直接跳出即可 if n > 0: tail.next = q break #将这K个节点以头插法插入 end = q while q != p: t = q.next q.next = tail.next tail.next = q q = t tail = end return pre.next