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

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

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

class Solution {
public:
   
    ListNode* reverseKGroup(ListNode* head, int k) {
        // write code here
        if(k==1 || head==nullptr)return head;
        //和反转指定区间一样
        ListNode* res=new ListNode(-1);
        res->next=head;
        ListNode* pre=res;
        ListNode* cur=pre->next;
        //计算总长度
        int size=0;
        while(cur){
            cur=cur->next;
            size+=1;
        }
        cur=pre->next;
        //同反转指定区间一样,循环size/k次,
        for(int i=0;i<size/k;i++){
            for(int j=i*k+1;j<(i+1)*k;j++){
                ListNode* temp=cur->next;
                cur->next=temp->next;
                temp->next=pre->next;
                pre->next=temp;
            }
            pre=cur;    //pre为上一区间的末尾
            cur=pre->next;      //新区间开头
        }
        return res->next;
    }
};

全部评论

相关推荐

ohs的小木屋:比不少实习待遇高了
点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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