题解 | #链表中的节点每k个一组翻转#
链表中的节点每k个一组翻转
https://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e
public class Solution {
/**
*
* @param head ListNode类
* @param k int整型
* @return ListNode类
*/
public ListNode reverseKGroup (ListNode head, int k) {
// write code here
// 建立尾表
ListNode tail = head;
// 循环遍历表
for (int i = 0; i < k; i++) {
// 如果不足k个,则直接返回
if (tail == null){
return head;
}
tail = tail.next;
}
// 翻转链表 前序和当前节点
ListNode prev = null;
ListNode cur = head;
for (int i = 0; i < k; i++) {
ListNode temp = cur.next;
cur.next = prev;
prev = cur;
cur = temp;
}
// 当前头变成尾
head.next = reverseKGroup(tail,k);
return prev;
}
}
