题解 | #链表中的节点每k个一组翻转#
链表中的节点每k个一组翻转
https://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e
class Solution { public: ListNode* reverseKGroup(ListNode* head, int k) { // write code here if(k==1 || head==nullptr)return head; //和反转指定区间一样 ListNode* res=new ListNode(-1); res->next=head; ListNode* pre=res; ListNode* cur=pre->next; //计算总长度 int size=0; while(cur){ cur=cur->next; size+=1; } cur=pre->next; //同反转指定区间一样,循环size/k次, for(int i=0;i<size/k;i++){ for(int j=i*k+1;j<(i+1)*k;j++){ ListNode* temp=cur->next; cur->next=temp->next; temp->next=pre->next; pre->next=temp; } pre=cur; //pre为上一区间的末尾 cur=pre->next; //新区间开头 } return res->next; } };