25. K 个一组翻转链表

class Solution {
public:
    ListNode* reverseKGroup(ListNode* head, int k) {
        ListNode* dummy=new ListNode(-1,head),*tail=dummy;
        while(tail)
        {
            ListNode* tmp=tail;
            for(int i=0;i<k&&tmp!=nullptr;i++)    tmp=tmp->next;
            if(tmp==nullptr)   break;
            ListNode* a=tail->next,*b=a->next;
            for(int i=0;i<k-1;i++)//只用循环k-1次
            {
                ListNode* t=b->next;
                b->next=a;
                a=b;
                b=t;
            }
            auto c=tail->next;
            tail->next->next=b;//组内第一个点指向最后一个点后面的数
            tail->next=a;//组外第一个节点指向组内最后一个数
            tail=c;//更新组外的第一个节点
        }
        return dummy->next;
    }
};
posted @   穿过雾的阴霾  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示