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

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

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

/**

  • struct ListNode {
  • int val;
  • struct ListNode *next;
  • }; */

class Solution { public: /** * * @param head ListNode类 * @param k int整型 * @return ListNode类 / ListNode reverseKGroup(ListNode* head, int k) { //本例中,head节点也存储了数据 // write code here if(head==NULL) //空链表处理办法 return head; if(k==1) //k=1,不进行反转操作 return head;

    int count=1;
    ListNode* res=new ListNode(-1);   //head节点存储了数据,设置结点res,使其指向head
    res->next=head;
    ListNode* tra=head;
    while(tra->next!=NULL)            //先遍历链表,统计节点数
    {
        count++;
        tra=tra->next;
    }
    
    int time=count/k;                //判断有几个区间需要反转
    ListNode* pre=res;
    ListNode* cur=res->next;
    
    for(int i=1;i<=time;i++)
    {
        for(int j=1;j<=k-1;j++)        //在某一个区间内的反转操作
        {
            ListNode* tmp=cur->next;
            cur->next=tmp->next;
            tmp->next=pre->next;
            pre->next=tmp;
        }
        
        //重新设置pre和cur指针指向的结点,以便进行下一组的操作
        pre=cur;
        cur=cur->next;
        
    }
    
    return res->next;
}

};

全部评论
翻转部分的代码很巧妙,但不易理解
点赞 回复 分享
发布于 2022-07-20 16:22

相关推荐

刷到过很多实习生和mentor处成哥们儿的帖子,看完大概率会羡慕这种亲近的上下级关系。但我想说,不管你跟带教的关系有多铁或者多僵,都得拎清课题分离这事儿,工作的边界感千万不能乱踩!📝&nbsp;下面这几条雷区,实习生们可千万别踩!1.别越级瞎提建议除非带教主动问你想法,否则别愣头愣脑地凑上去说&nbsp;“我觉得你应该咋样咋样”。咱就管好自己那一亩三分地,把本职工作干明白就够了,别瞎操心不属于自己的事儿。2.别卖队友换好感❌那种把实习生之间的小秘密捅出去,就为了换带教或者同事认可的操作,纯纯是作死。尤其是那些会影响到别人的话,比如&nbsp;“她就是嫌通勤远才请假”“他们偷偷建了个小群吐槽”,这话一出口,不仅把同事的信任踩碎了,自己还得惹一身麻烦。3.别养成反驳甩锅的臭毛病📗犯了错第一反应别是找借口、甩锅,那没啥用。不如沉下心复盘问题出在哪儿,琢磨个解决方案出来,保证下次不再掉坑里,这才是正经事。4.别瞎掺和正职的八卦我之前实习的组氛围贼好,正职们经常聊对象、聊恋爱进展啥的。但人家正职能聊,不代表咱实习生能跟着掺和。乖乖当个安静的吃瓜群众,竖起耳朵听着就行,别瞎插嘴,当个小透明准没错👂4.别随便评价别人的人品背后嚼舌根说别人咋样咋样,很容易让人觉得你没分寸。你聊啥,别人就可能觉得你认同啥,职场里保持中立,少议论人,才是最稳的。
omega@1112:唯一的大雷其实是不要问mentor的薪资待遇
mt对你说过最有启发的一...
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

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