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

K个一组链表翻转

目录

1. 题意

2. 解题思路

3. 代码


1. 题意

给一个链表,按 k 进行翻转,也就是 k = 2 ,两两进行翻转,如果不够2则不动。

2. 解题思路

首先思考怎么翻转一个链表,反转链表:https://leetcode.cn/problems/UHnkqh/description/

只要最开始记录1和2,2个节点,并让1指向空,在根据2得到3节点。

根据题意说明反转k次,那么首先计算总共要反转多少次,比如:

总共5个节点,5/2,总共反转2次,结束让最后的指针指向剩余的节点。

那么知道怎么反转了,那怎么得到答案呢?

首先反转1和2 

2作为起点,怎么存?很好解决让new一个指针ans,定义一个指针tmp=ans指向他,那怎么让反转后的最后一个节点1指向下一个节点?很好解决,因为最开始的时候cur已经指向1了,直接存。

最开始的状态直接标记cur,用一个pos指针标记

反转后的状态直接让tmp指向他,也就是 ans的next 指向 prev 所在的位置并让 tmp进行指向(ans后续返回答案要用)。

然后让tmp指向之前标记的cur也就是pos,也就是反转之前的头部。

进行第二次反转:

先让pos=cur进行标记反转前的头部

然后进行反转

让tmp指向prev

在让tmp等于pos,和第一次步骤一样。

结束,让tmp指向没反转的节点,节点就是cur指向的节点。

3. 代码

    int Licount(ListNode* head){   int cnt=0;while(head){++cnt;head=head->next;}return cnt;}ListNode* reverseKGroup(ListNode* head, int k) {// 求链表长度int cnt = Licount(head);// 求总共反转多少次cnt/=k; // 让这个新的节点指向最终答案ListNode* tmp=new ListNode(-1);// 让这个链节点把 2个反转之后的链表 进行衔接ListNode* tmp_next=tmp;// 进行反转定义的3个指针ListNode* prev=nullptr,*mid=head,*tail=head->next;while(cnt--){// 保存要反转的 链表的最开始的头部ListNode* pos=mid;// 反转k次for(int i=0;i<k;++i){mid->next=prev;prev=mid;mid=tail;if(tail!=nullptr)tail=tail->next;}// 让tmp 指向反转后的链表的头部tmp_next->next=prev;// 让tmp等于链表最开始的头部,反转前的头部tmp_next=pos;// 让他指向空,不执行也没问题tmp_next->next=nullptr;}// 衔接没参与反转的链表tmp_next->next=mid;// 返回最后的答案return tmp->next;}

http://www.xdnf.cn/news/561493.html

相关文章:

  • 【大前端】使用NodeJs HTTP模块创建web服务器、SSE通讯
  • 运维web服务器
  • Java—— IO流 第二期
  • 怎么把cursor(Cursor/ollama)安装到指定路径
  • 从 CANopen到 PROFINET:网关助力物流中心实现复杂的自动化升级
  • 软考 测试 静态测试 动态测试
  • 2025ICPC南昌邀请赛流水账
  • 有理函数积分的一般方法
  • Data Vault 2.0:企业数据建模的现代方法
  • IDEA推送到gitlab,jenkins识别,然后自动发布到需要的主机
  • 【Django】Django DRF 中如何手动调用分页器返回分页数据(APIView,action场景)
  • eclipse 生成函数说明注释
  • 手术机器人行业新趋势:Kinova多机械臂协同系统如何突破复杂场景适应性瓶颈?
  • Idea 查找引用jar包依赖来源的Maven pom坐标
  • 实践大模型提示工程(Prompt Engineering)
  • 01. C#入门系列【你的第一个程序】从Hello World开始
  • 智能驾驶中的深度学习:基于卷积神经网络的车道线检测
  • Linux:进程信号---信号的保存与处理
  • docker使用
  • SRS流媒体服务器,配置国标协议对接和HTTPS视频流输出功能
  • 孤岛检测应用背景及实现原理
  • 解决Query Error: [S1000][15233] 无法添加属性。‘dbo.xxx.area_ids‘ 已存在属性‘MS_Description‘。
  • PaddleOCR的Pytorch推理模块
  • 每日算法-250521
  • RISC-V IDE MRS2 开发笔记一:volatile关键字的使用
  • ArcGIS Pro 3.4 二次开发 - Arcade
  • react中运行 npm run dev 报错,提示vite.config.js出现错误 @esbuild/win32-x64
  • vue项目启动报错(node版本与Webpack)
  • 创建Workforce
  • Apollo10.0学习——cyber常用指令