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

LeetCodeOJ题:回文链表

题目链接

回文链表

题目描述

 

解题思路:

 1.找到链表中间节点:

使用快慢指针法。定义两个指针,慢指针每次移动一个节点,快指针每次移动两个节点。当快指针到达链表末尾时,慢指针就会指向链表的中间节点。如果链表有奇数个节点,慢指针指向正中间的节点;如果链表有偶数个节点,慢指针指向正中间右边的节点。例如对于链表1->2->3->4->5,慢指针最终会指向3;对于链表1->2->3->4,慢指针会指向3。

2.反转后半部分链表:

从中间节点开始,将其后的链表进行反转。可以使用迭代或递归的方式实现链表反转。反转后,原链表后半部分的顺序被颠倒,这样就可以方便地与前半部分进行比较。例如,对于链表1->2->3->4->5,找到中点3后,将3之后的4->5反转成5->4,得到两条链表1->2->3和5->4。 

 

3.比较前后两部分链表:

设置两个指针,一个从原链表的头节点开始,另一个从反转后的后半部分链表的头节点开始,同时遍历这两条链表,每次循环比较两个指针所指向节点的值是否相等。如果不相等,则说明链表不是回文链表,返回false。如果循环直到反转后的后半部分链表遍历结束,都没有出现不相等的情况,说明链表是回文链表,返回true。 

整体过程如下

  

疑难疑点 

  • 关于不反转整个链表的原因:如果反转整个链表,确实可以从新的头节点开始依次访问原链表的最后一个节点、倒数第二个节点等,但这样会破坏链表前半段的结构。而我们需要同时遍历原链表的前半部分和后半部分来进行比较,若反转整个链表,就无法正常获取原链表前半部分的节点顺序,导致无法实现通过比较前后部分来判断回文的逻辑7。

 完整代码:

 

http://www.dtcms.com/a/295611.html

相关文章:

  • HTTP/1.0、HTTP/1.1 和 HTTP/2.0 主要区别
  • Java设计模式之行为型模式(中介者模式)介绍与说明
  • 常用设计模式系列(十一)—外观模式
  • VUE2 学习笔记5 动态绑定class、条件渲染、列表过滤与排序
  • 微服务-springcloud-springboot-Skywalking详解(下载安装)
  • C++中std::list的使用详解和综合实战代码示例
  • Linux进程间通信:管道机制全方位解读
  • uniapp转微信程序点击事件报错Error: Component “xx“ does not have a method “xx“解决方案
  • Linux724 逻辑卷挂载;挂载点扩容;逻辑卷开机自启
  • 【PZ-ZU7EV-KFB】——ZYNQ UltraScale + ZU7EV开发板ARM/FPGA异构计算开发平台,赋能多域智能硬件创新
  • The Missing Semester of Your CS Education 学习笔记以及一些拓展知识(六)
  • 从“类”到“道”——Python 面向对象编程全景解析
  • J2EE模式---组合实体模式
  • 从指标定义到AI执行流:衡石SENSE 6.0的BI PaaS如何重构ISV分析链路
  • 【推荐100个unity插件】Animator 的替代品?—— Animancer Pro插件的使用介绍
  • Mac电脑使用IDEA启动服务后,报service异常
  • 微算法科技(NASDAQ: MLGO)研究量子信息递归优化(QIRO)算法,为组合优化问题拓展解决新思路
  • 橱柜铰链的革命:炬森精密如何以创新科技重塑家居体验
  • 详解力扣高频SQL50题之197. 上升的温度【简单】
  • 重构数据库未来:金仓数据库,抢占 AI 原生时代先机
  • 数据结构系列之红黑树
  • 亚马逊云科技:以云为翼,助你翱翔数字新天空
  • pycharm配conda环境
  • 2025年PostgreSQL 详细安装教程(windows)
  • Pycharm、Python安装及配置小白教程
  • 智能制造场景195个术语的16个分类
  • 模块化商城的快速部署之道:ZKmall开源商城如何让电商功能即插即用
  • Unity VS Unreal Engine ,“电影像游戏的时代” 新手如何抉择引擎?(1)
  • Java设计模式-适配器模式
  • vue 中什么场景使用 export default 和setup()