zoukankan      html  css  js  c++  java
  • 25. Reverse Nodes in k-Group(js)

    25. Reverse Nodes in k-Group

    Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.

    k is a positive integer and is less than or equal to the length of the linked list. If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is.

    Example:

    Given this linked list: 1->2->3->4->5

    For k = 2, you should return: 2->1->4->3->5

    For k = 3, you should return: 3->2->1->4->5

    Note:

    • Only constant extra memory is allowed.
    • You may not alter the values in the list's nodes, only nodes itself may be changed.

    题意:对给定链表每k个节点进行反转一次

    代码如下:

    /**
     * Definition for singly-linked list.
     * function ListNode(val) {
     *     this.val = val;
     *     this.next = null;
     * }
     */
    /**
     * @param {ListNode} head
     * @param {number} k
     * @return {ListNode}
     */
    var reverseKGroup = function(head, k) {
        if(!head || k===1) return head;
        var dummy=new ListNode(-1);
        var pre=dummy,cur=head;
        dummy.next=head;
        var i=0;
        while(cur){
            i++;
            if(i%k===0){
                pre=reverseOneGroup(pre,cur.next);
                cur=pre.next;
            }else{
                cur=cur.next;
            }
        }
        return dummy.next;
    };
    var reverseOneGroup=function(pre,next){
        var last=pre.next;
        var cur=last.next;
        while(cur!==next){
            last.next=cur.next;
            cur.next=pre.next;
            pre.next=cur;
            cur=last.next;
        }
        return last;
    }
  • 相关阅读:
    人月神话阅读笔记03(完)
    人月神话阅读笔记02
    各种前端好用的在线工具、学习网站、插件
    垂直居中css
    输入框判断表情的输入js
    jq九宫格抽奖
    移动端中一像素的解决方案
    获取url地址栏中的参数数据
    ios中getTime()的兼容性问题
    清除Css中select的下拉箭头样式
  • 原文地址:https://www.cnblogs.com/xingguozhiming/p/10387404.html
Copyright © 2011-2022 走看看