class Solution {
public:
/// 参考翻转pairs,翻转x~x+(k-1)之间的节点, x->next = reverseKGroup(x+k,k)
ListNode* reverse(ListNode *first,ListNode *last)
{
ListNode *pre = nullptr;
while(first!=last)
{
ListNode *temp = first->next;
first->next = pre;
pre = first;
first = temp;
}
return pre;
}
ListNode *reverseKGroup(ListNode *head, int k)
{
if(!head)
return nullptr;
ListNode *node = head;
for(int i=0;i<k;i++)
{
if(!node)
return head;
node = node->next;
}
ListNode *newHead = reverse(head,node);
head->next = reverseKGroup(node,k);
return newHead;
}
};