不想模拟,看了别人的思路写了下,递归是神
ListNode* reverse(ListNode* a, ListNode* b)
{
ListNode* pre = new ListNode(NULL);
ListNode* cur = a;
ListNode* temp;
while (cur != b)
{
temp = cur->next;
cur->next = pre;
pre = cur;
cur = temp;
}
return pre;
}
ListNode* reverseKGroup(ListNode* head, int k) {
ListNode *b = head;
for (int i = 0; i < k; i++)
{
if (b == NULL)
return head;
b = b->next;
}
ListNode* newhead = reverse(head, b);
head->next = reverseKGroup(b, k);
return newhead;
}