ListNode* reverseBetween(ListNode* prev,ListNode* next)//reverse prev->next, last->prev之间的链表{ListNode* last = prev->next;ListNode* cur = last->next;while(cur!=next){last->next = cur->next;cur->next = prev->next;prev->next = cur;cur = last->next;}return last;}ListNode *reverseKGroup(ListNode *head, int k) {// Note: The Solution object is instantiated only once and is reused by each test case.if(!head||k<=1) return head;ListNode* dummy = new ListNode(0);dummy->next = head;ListNode* cur = head;ListNode* prev = dummy;int i = 0;while(cur){++i;if(i%k==0){prev = reverseBetween(prev,cur->next); //reverse一个区间cur = prev->next; //注意这里不是cur = cur->next;}elsecur = cur->next;}ListNode* newHead = dummy->next;delete dummy;return newHead;}