题解 | #链表中的节点每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;
}
};
查看13道真题和解析