题目要求
代码实现
class Solution {
public:
ListNode* reverseKGroup(ListNode* head, int k) {
if(k <= 1)
return head;
ListNode* node = head;
for(int i = 0; i < k; i++)
{
if(!node)
return head;
node = node->next;
}
ListNode* newhead = reverse(head, node);
//经过反转之后head节点会变成一段中间的最后一个节点,头节点为newhead
//head->next节点和下一个区间内的头节点进行连接
head->next = reverseKGroup(node, k);
return newhead;
}
private:
//区间反转
ListNode* reverse(ListNode* left, ListNode* right)
{
ListNode* pre=right;
while (left!=right) {
ListNode* node=left->next;
left->next=pre;
pre = left;
left = node;
}
return pre;
}
};