# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class ListNode(object):
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution(object):
def reverseKGroup(self, head, k):
"""
:type head: ListNode
:type k: int
:rtype: ListNode
"""
def KReverse(head,k):
"""
函数内检查
:param head: ListNode
:param k: int
:return:
"""
head_check=head
head_move=head
for j in range(k):#检查
if head_check.next==None:
return None
else:
head_check=head_check.next
list_ListNode=[]
for i in range(k+1):#比如k=2那么要入栈三个点
head_move = head_move.next
list_ListNode.append(head_move)
for m in range(len(list_ListNode))[-2:0:-1]:#倒数第二个开始,左闭右开
list_ListNode[m].next=list_ListNode[m-1]
head.next=list_ListNode[-2]
list_ListNode[0].next=list_ListNode[-1]
head=list_ListNode[0]
return head
head_curr=ListNode(0,head)
head_re=head_curr
while head_curr!=None:
head_curr=KReverse(head_curr,k)
return head_re.next
想多说一句的就是如果不想改变但是又不能不变的变量(比如head指针这种),要么新设置一个变量记录初始值,要么当做参数传进去