当前位置: 首页 > article >正文

力扣打卡10:K个一组翻转链表

链接:25. K 个一组翻转链表 - 力扣(LeetCode)

这道题需要在链表上,每k个为一组,翻转,链接。

乍一看好像比较容易,其实有很多细节。比如每一组反转后怎么找到上一组的新尾,怎么找到下一组的新头。并且进阶做法需要空间O(1)。只能遍历一个链表。

我将题大致分为几步:

1.用l,r指针作移动窗口,划定当前组(通过固定l,移动r)

2.将本组的头,尾结点记录。

3.翻转当前组

4.将上一个组的尾连接当前组的新头。

再注意一些长度不足,第一组等细节,就可以解题。

我的代码:

class Solution {
public:
    ListNode* reverseKGroup(ListNode* head, int k) {
        if(k==1) return head;
        ListNode *a,*b,*c,*l,*r,*t;
        a=b=c=l=r=t=head;
        ListNode *m=nullptr;
        bool flag=0;
        while(1)
        {
            for(int i=1;i<k;i++)
            {
                if(r==nullptr) break;
                r=r->next;
            }
            if(r==nullptr) break;
            if(flag==0){flag=1; t=r;}
            else m->next=r;
            a=m; b=l; c=l->next; m=l; l=r->next;
            while(c!=r->next)
            {
                b->next=a;
                a=b;
                b=c;
                c=c->next;
            }
            b->next=a; r=l; 
        }
       if(flag==1) m->next=l;
       return t;
    }
};


http://www.kler.cn/a/428608.html

相关文章:

  • Python----Python高级(正则表达式:语法规则,re库)
  • Github 2025-01-20 开源项目周报 Top15
  • 可视化-numpy实现线性回归和梯度下降法
  • 光谱相机在智能冰箱的应用原理与优势
  • 数据结构学习记录-队列
  • 走进DevOps:让开发与运维齐头并进
  • 【前端学习笔记】Vue2基础
  • Kafka服务器的简单部署以及消息的生产、消费、监控
  • three.js透光率实现原理归纳
  • 论文阅读笔记:Adaptive Rotated Convolution for Rotated Object Detection
  • 最短路问题
  • 前端(三)html标签(2)
  • 数据中心可视化提升运维新高度
  • 多项式拟合之Math.NET Numerics
  • [Maven]下载安装、使用与简介
  • 【框架】环境切换集成封装
  • CSS3 布局样式及其应用
  • 【机器学习】机器学习的基本分类-监督学习-岭回归(Ridge Regression)
  • 4.1模块化技术之函数,本地类
  • Flink 核心知识总结:窗口操作、TopN 案例及架构体系详解
  • 如何使用 Python 实现链表的反转?
  • C++_关于异常处理throw-try-catch
  • MATLAB 非重叠点云提取算法(92)
  • C++的一些经典算法
  • java 服务端tcp方式接收和推送数据到c++或者qt(亲测可用)
  • 机器学习经典算法