方法
涉及到有规律的,可以想想使用递归 首先对每K个进行依次反转,然后将上个翻转的链表的最后节点的next指向下个翻转链表的头节点,整个链表就被串联起来了
- 初始:123 456
- 翻转:321 654
- 连接:1.next = 6 【1最初的头节点,head】
function reverseKGroup( head , k ) {
if(!head) return head;
let pre = null;
let cur = head;
let node = head;
for(let i = 0; i<k; i++) {
if(node === null) return head; // 校验是否满足k
node = node.next;
}
for(let i = 0; i<k; i++) {
const old = cur.next;
cur.next = pre;
pre = cur;
cur = old;
}
head.next = reverseKGroup(cur, k); // 每次循环 都接在本次的head上
return pre; // 最终返回头节点
}
`