题解

将单链表的每K个节点之间逆序

http://www.nowcoder.com/questionTerminal/66285653d28b4ed6a15613477670e936

vector<list_node*> reverseN(list_node * head1, int K) {
    list_node* pre = nullptr;
    list_node* next = nullptr;
    vector<list_node*> res;
    res.push_back(head1);
    while(K--) {
        next = head1->next;
        head1->next = pre;
        pre = head1;
        head1 = next;
    }
    res.push_back(pre);
    res.push_back(head1);
    return res;
}

list_node * reverse_knode(list_node * head1, int K)
{
    //////在下面完成代码
    list_node* cur = head1;
    int n = 0;
    while(cur != nullptr) { n++; cur = cur->next; }
    n /= K; //逆序n次

    vector<list_node*> p; //p[0]:逆序后的尾节点 p[1]:逆序后的头节点 p[2]:逆序后的下一个节点
    vector<vector<list_node*>> list; //每次逆序的P放入list中
    while(n--) {
        p = reverseN(head1, K); //依次逆序K个节点
        list.push_back(p);    //存入P
        head1 = p[2];    //下一个节点给head1
    }
    //将list中的节点头尾相连
    for(int i=0; i<(int)list.size()-1; i++) {
        list[i][0]->next = list[i+1][1];
    }
    list[(int)list.size()-1][0]->next = head1; //接入剩下的节点
    return list[0][1];
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利&nbsp;有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的&nbsp;真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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