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

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

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

ListNode* reverseKGroup(ListNode* head, int k) {
    // write code here
    ListNode *dummy=new ListNode(0);
    dummy->next=head;
 
    ListNode *pre=dummy,*p=dummy->next;
    int n=0;
    while(p){        //遍历链表计算链表长度
       ++n;
        p=p->next;
    }
    int r=n/k;  //计算需要翻转几组
    p=dummy->next;
    while(r>0){              //翻转r组
        for(int i=0;i<k-1;++i){    //k个节点为一组翻转链表,头插法
            ListNode *temp=p->next;
            p->next=temp->next;
            temp->next=pre->next;
            pre->next=temp;
        }
        pre=p;    //更新需要翻转的中间部分的头节点
        p=p->next; //更新需要翻转的第一个节点指针
        --r;
    }
    return dummy->next;  //时间复杂度O(n),空间复杂度O(1)
}

};

全部评论

相关推荐

牛至超人:哈工大已经很棒了,不需要加括号了,然后咋没有实习经历呢?火速趁寒假整一段实习,导师不让就狠狠肘击
投了多少份简历才上岸
点赞 评论 收藏
分享
白火同学:1、简历可以浓缩成一页,简历简历先要“简”方便HR快速过滤出有效信息,再要“历”用有效信息突出个人的含金量。 2、教育背景少了入学时间~毕业时间,HR判断不出你是否为应届生。 3、如果你的平台账号效果还不错,可以把账号超链接或者用户名贴到对应位置,一是方便HR知道你是具体做了什么内容的运营,看到账号一目了然,二是口说无凭,账号为证,这更有说服力。
面试被问期望薪资时该如何...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务