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

LeetCode--25.k个一组翻转链表

解题思路:

        1.获取信息:

                (1)给定一个链表,每k个结点一组进行翻转

                (2)余下不足k个结点,则不进行交换

        2.分析题目:

                其实就是24题的变题,24题是两两一组进行交换,这一道题就是多个一组进行交换

        3.示例查验:

                示例1和示例2:都用图表明了多个一组怎么进行交换

        4.尝试编写代码:

                我看见这道题,构思了三种方法,但我目前只实现了一种构思,后续我会补上其他的方法的,放心吧

                这三种方法的核心思路都是一样的,或者说25题和24题的核心思路都是一样的,各个方法只是手法略有不同而已,手法好了,你可以叫做手法大师,哈哈

                所以我下面方法的名字就是按手法来命名的,所以就直接看代码注释,我就不一 一讲解了

                (1)辅助存储空间+迭代

                        以下是完整代码

class Solution {
public:ListNode* reverseKGroup(ListNode* head, int k) {stack<ListNode*>s;//辅助存储空间bool first=true;//是否是第一个组合ListNode*res;//结果链表的首元结点ListNode*temp;//存储上一组结点翻转后的最后一个结点while(head!=nullptr){s.push(head);head=head->next;if(s.size()==k){//如果储存够了一组if(first){res=s.top();first=false;}//如果是第一组,我们储存下结果链表的首元结点else{temp->next=s.top();//不是第一组,就连接上一组结点翻转后的最后一个结点和下一组结点翻转后的第一个结点}while(s.size()-1){//进行翻转操作ListNode*now=s.top();s.pop();now->next=s.top();}temp=s.top();//留下一个结点用于连接下一组结点翻转后的第一个结点temp->next=nullptr;//处理结点断开问题s.pop();}}if(s.size()){//处理冗余结点不足k个的情况,就保持它们原有的顺序,不进行翻转,直接进行连接while(s.size()!=1)s.pop();temp->next=s.top();}return res;}
};

下面的两种手法,我在努力地实现,你也可以尝试一下,看它们是否可行,到时候来这里对答案哦,算是磨练一下你咯,宝剑锋从磨砺出,梅花香自苦寒来嘛

                (2)使用辅助存储空间+递归

                (3)不使用辅助存储空间+递归

哈哈,今天又是偷懒的一天,之前21题,我说了后续会补上第三种方法,现在虽然还没有补上,但也快了,我打算好好学习一下运算符重构,也要点时间的,但我说会补,那就一定会补上的

好了,早睡,还是提一嘴,纸上得来终觉浅,绝知此事要躬行

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

相关文章:

  • 从0开始学习R语言--Day20-ARIMA与格兰杰因果检验
  • 【第八篇】 SpringBoot高级配置(配置篇)
  • CZGL.SystemInfo:跨平台的系统信息获取库
  • AUTOSAR实战教程--DoIP_01_配置项解释
  • 0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
  • Linux下GCC和C++实现统计Clickhouse数据仓库指定表中各字段的空值、空字符串或零值比例
  • Go基本语法——go语言中的四种变量定义方法
  • 【Java学习笔记】BigInteger 和 BigDecimal 类
  • 【Go语言基础【19】】接口:灵活实现多态的核心机制
  • 基于RT-DETR算法的夜间交通车辆与行人目标检测
  • FPGA静态功耗
  • 2025年与2030年AI及AI智能体 (Agent) 市场份额分析报告
  • 网络之交换机
  • 【题解-洛谷】B3626 跳跃机器人
  • JavaWeb——登录(14/16):登录校验-Interceptor-详解(使用细节、拦截路径的配置、匹配规则、执行流程、拦截器与过滤器的区别)
  • 【华为云Astro 轻应用】组装“待处理工单”页面示例
  • C语言基础面试问答
  • 【人工智能 | 项目开发】Python Flask实现本地AI大模型可视化界面
  • 苍穹外卖-day01
  • 用 DeepSeek 高效完成数据分析与挖掘
  • Bootstrap Table开源的企业级数据表格集成
  • 大数据学习(133)-Hive数据分析2
  • 论文笔记:Large Language Models for Next Point-of-Interest Recommendation
  • 云原生监控体系建设:Prometheus+Grafana的企业级实践
  • 作为点的对象CenterNet论文阅读
  • 【论文阅读30】Bi-LSTM(2024)
  • Spring Boot + Flink + FlinkCDC 实现 MySQL 同步到 MySQL
  • 【Java学习笔记】Arrays类
  • 视频音频去掉开头结尾 视频去掉前n秒后n秒 电视剧去掉开头歌曲
  • 408第一季 - 数据结构 - 图