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

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

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

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    //反转链表
    ListNode * reverseListNode(ListNode * head){
        ListNode *pre=nullptr;
        ListNode *now=head;
        while(now!=nullptr){
            ListNode *last=now->next;
            now->next=pre;
            pre=now;
            now=last;
        }
        return pre;
    }
    ListNode* reverseKGroup(ListNode* head, int k) {
        //临时节点
        ListNode *dummy=new ListNode(-1);
        dummy->next=head;
        ListNode *start=head;
        //每一次反转的前一个节点
        ListNode *pre=dummy;
        //每一次反转的最后一个节点
        ListNode *lastTempNode=nullptr;
        int cnt=0;
        while(start!=nullptr){
            lastTempNode=start;
            //每次反转之后,的下一个节点
            start=start->next;
            cnt++;
            if(cnt==k){
                cnt=0;
                //反转开始的头节点
                ListNode *tempHead=pre->next;
                //反转的最后一个节点指向空
                lastTempNode->next=nullptr;
                ListNode* newStart=reverseListNode(tempHead);
                //反转完之后,pre节点指向新的头节点
                pre->next=newStart;
                //反转完之后,新的尾节点指向下一个节点
                tempHead->next=start;
                //重新赋值头节点
                pre=tempHead;
            }
        }
        return dummy->next;
    }
};
全部评论

相关推荐

(黑话警告⚠️:hc=岗位数量, mt=导师, ld=直属领导, cr=代码审查)25年1月,我加入了字节某前端团队,并期望能在这里待到秋招并尝试转正。然而,就在上周,ld 找我1v1,告诉我,我的能力和团队预期不太匹配,并和我劝退。晴天霹雳吗?肯定是有的。那一刻,脑子里嗡嗡作响,各种情绪翻涌。但冷静下来想想,这几个月,自己在能掌控的范围内,确实有不少地方做得不尽如人意。所以,我想把这段不算成功的经历复盘一下,希望能给同样在努力转正的你提个醒,避开我踩过的坑。一、ld 的要求要注意刚进组时,ld就和我聊过转正的事。我当时发问:“咱们这儿有hc 吗?” ld没直接回答,只是说:“看能力,能力到了...
牛客上的彭于晏:过来人告诉你,入职后要做的第一件事儿不是说主动找活儿做,你要先学会融入团队,摸清ld的性格,投其所好。然后才是展示你的能力,能力上可以说技术或者业务,以业务能力为主,技术能力为辅。优先保证自己对业务需求的开发保证质量效率,然后再谈技术的问题,不要你觉得啥啥啥不行就想着整体优化了(发现校招生最喜欢干这事儿),我工作快5年了发现搞这种的最后都没啥好的结果,产出没有还引入新的bug,校招或者实习的水平看到的问题别人看不到嘛?为什么别人不去搞?浪费时间还没收益的事儿不要去做,技术上的能力体现在对于一个新需求,在不符合现在业务发展的架构设计上,你能拿出好的技术方案同时能考虑到后续业务发展逐渐将技术架构引入合理的架构,这是一个漫长的过程而不是一次性的
点赞 评论 收藏
分享
待现的未见之事:起码第一句要把自己的优势说出来吧。比如什么xx本27届学生,随时到岗....
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务