25. K 个一组翻转链表

70 阅读1分钟

给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。

接替思路

var resverseKGoroup = function (head, k) {
    if (!head) return null;
    let ret = new ListNode (-1,head),
    pre = ret
    do {
        pre.next = reverse(pre.next,k);

        for(let i = 0; i< k && pre;i++){
            pre = pre.next
        }
        if (!pre)nreak;
    }while(1)
    return ret.next;
}

翻转

vr reverse = function (head,n){
let pre = head, cur = head,con = n;
while(--n&& pre){
    pre = pre.next
}
if (!pre)return head;
pre = null;
while(con--){
    [cur.next,pre,cur] = [pre,cur,cur.next]
}
head.next = cur
return pre