题解 | #链表中的节点每k个一组翻转#
链表中的节点每k个一组翻转
https://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param k int整型 * @return ListNode类 */ struct ListNode * rever(struct ListNode * left,struct ListNode * right) { struct ListNode * pre = right; struct ListNode * nex = NULL; while(left != right) { nex =left -> next; left -> next = pre; pre =left; left =nex; } return pre; } struct ListNode* reverseKGroup(struct ListNode* head, int k ) { // write code here if(!head) { return NULL; } int n =0; struct ListNode * ptr =head; while(ptr) { ptr =ptr ->next; n++; } if(n < k || k ==1) { return head; } struct ListNode * node = head; for(int i =0 ;i<k;i++) { node = node -> next; } struct ListNode * res = rever(head,node); head -> next = reverseKGroup(node, k); return res; }