# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param head ListNode类
# @param k int整型
# @return ListNode类
#
class Solution:
def reversSGroup(self ,head:ListNode, m:int ,n :int) -> ListNode:
#涉及链表反转,设置哨兵节点
st = ListNode(-1)
st.next = head #将传入节点合并至哨兵节点后
pre = st
for _ in range(m-1): #将链表反转节点设置为 m 的前驱节点
pre = pre.next
cur = pre.next # 将链表的反转节点设置为反转时的当前节点
for _ in range(n - m) : # n-m 需要调动的节点个数
temp = cur.next
cur.next = temp.next
temp.next = pre.next
pre.next = temp
return st.next
def reverseKGroup(self , head: ListNode, k: int) -> ListNode:
#遍历传入的链表,确定链表中节点个数
an = 1
cur = head
if cur == None :
return head
while cur.next :
cur = cur.next
an += 1
if an < k : #如果传入链表个数小于 k 的情况 直接返回传入链表
return head
cur = head
for i in range(an+1):
if i % k == 0 and i != 0:
cur = self.reversSGroup(cur,i-k+1,i)
return cur