题解 | #链表中的节点每k个一组翻转#

链表中的节点每k个一组翻转

http://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e

/** *

  • @param head ListNode类
  • @param k int整型
  • @return ListNode类 */

function reverseKGroup( head , k ) { // write code here if(head ==null|| head.next ==null) return head;

const dummy=new ListNode(0);
dummy.next=head;
let prev=dummy,end=dummy;

while (end.next !== null) {
    for(let i=0;i<k&&end!==null;i++){
        end=end.next;
    }
    
    if(end==null) break;
    
    let next=end.next;
    end.next=null;
    let start=prev.next;
    prev.next=reverse(start);
    
    start.next=next;
    
    prev=start;
    end=start;
}

return dummy.next;

}

// 翻转链表

function reverse(head){ if(head==null||head.next==null) return head;

let prev=null,cur=head;

while(cur!==null){
    const temp=cur.next;
    cur.next=prev;
    prev=cur;
    cur=temp;
}

return prev;

}

module.exports = { reverseKGroup : reverseKGroup };

全部评论

相关推荐

粗心的雪碧不放弃:纯学历问题,我这几个月也是一直优化自己的简历,后来发现优化到我自己都觉得牛逼的时候,发现面试数量也没有提升,真就纯学历问题
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务