问题:对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法(不产生新的链表),判断其是否为回文结构,bollean类型返回true,false.。回文结构:例如1->2->2->1

方法:首先要判断链表为空以及只有一个结点的情况。接下来
1.找中间结点(利用快慢指针,slow走一步,fast走两步)详见JAVA——快慢指针解决链表相关问题(一)

2.进行翻转,把中点以后的链表进行翻转,要有三个变量进行转换。

3.两头往中间走,在head和slow不相等的情况下(未走到中间的情况下),判断head和slow的值是否相等,偶数走到head.next=slow处,返回true;奇数走到head和slow相等处,返回true。

代码:

public boolean chkPalindrome(ListNode head) {if(head==null){return true;}if(head.next==null){return true;}//1.找中间结点ListNode slow=head;ListNode fast=head;while(fast!=null && fast.next!=null){//先要判断fast再判断fast.nextslow=slow.next;fast=fast.next.next;}//此时slow指向的结点就是中间结点。//2.进行翻转ListNode cur=slow.next;while(cur!=null){ListNode curNext=cur.next;//不可以在循环外,若cur为null,则curNext会产生空指针异常cur.next=slow;slow=cur;cur=curNext;}//此时已经翻转完毕 slow指向的地方就是最后一个结点while(slow!=head){if(slow.val!=head.val){return false;}if(head.next==slow){return true;}head=head.next;slow=slow.next;}return true;}

JAVA——链表的回文结构相关推荐

  1. JAVA链表习题---回文结构(详细图解)

    回文结构 前言 什么是回文结构? 题目描述 思路分析 完整代码 前言 什么是回文结构? 回文结构:结构相同.方向相反的序列. 通俗讲,指一个顺着读和反过来读都一样的字符串. 特点:对称 题目描述 对于 ...

  2. JAVA链表中迭代器的实现

    注:本文代码出自<java数据结构和算法>一书. PS:本文中类的名字定义存在问题,Link9应改为Link.LinkList9应该为LinkList.由于在同包下存在该名称,所以在后面接 ...

  3. java 增 删 查 改_如何对java链表进行增、删、查、改操作

    如何对java链表进行增.删.查.改操作 发布时间:2020-06-23 10:41:33 来源:亿速云 阅读:79 作者:Leah 如何对java链表进行增.删.查.改操作?针对这个问题,今天小编总 ...

  4. java链表奇数倒序偶数顺序_将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变。...

    2.将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变. 示例: 交换前链表的顺序             交换后链表的顺序 4→5→3→1→2   == ...

  5. 【牛客】链表的回文结构

    ​​​​​​链表的回文结构_牛客题霸_牛客网 (nowcoder.com) 题目: 对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构. 给定一个链表的 ...

  6. 对java 链表删除节点 引用误区理解:对局部变量 cur= cur.next及cur.next=cur.next.next,及cur.next = cur.next.next.next的理解图解

    对java 链表删除节点 引用误区理解: 对java 链表删除节点 引用误区理解: 对局部变量 cur= cur.next及cur.next=cur.next.next,及cur.next = cur ...

  7. [数据结构]题海啊,全是水(三)链表中倒数第k个节点、链表的回文结构、链表分割

    这是一个目录 链表中倒数第k个节点 解法一 解法二 链表的回文结构 思路 代码 链表分割 思路 代码 最后 菜鸡大学生的数据结构--刷题篇3 我们的第三题小宝贝儿回归了! 菜鸡大学生明白,笔试oj题目 ...

  8. 数据结构: JAVA 链表

    链表:将数据结构通过节点进行储存,然后使用一个叫做next的引用/指针将这些节点串起来,这样的结构我们就叫做链表. 链表主要有这样的几个分类:单向/双向,带头/不带头,循环/非循环 我们主要掌握单向非 ...

  9. 链表的回文结构@Nowcoder—— 单链表

    小题解 1. 题目 2. 思路及小注意 3. 题解 1. 题目 题目链接:链表的回文结构 2. 思路及小注意 这道题目整合了之前几道题目,返回链表中间节点,反转单链表.需要比较熟悉. 判断是否为回文链 ...

最新文章

  1. node编写定时任务,for循环只执行一遍的解决办法
  2. 开源代码hosting openfoundryfrom tw
  3. 交叉验证(cross validation)是什么?K折交叉验证(k-fold crossValidation)是什么?
  4. Vivado IP核的综合模式:Global以及Out of context的区别理解
  5. 广播搜寻服务器的动态IP
  6. php 发送带附件的邮件,php发送带附件的电子邮件
  7. hao123电脑版主页_hao123浏览器 原生网民的记忆 一代站长的传奇
  8. java复选框如何显示在文本雨_java – 在复选框的itemStatechanged事件上显示文本字段...
  9. mysql nginx 无法访问_nginx可以启动成功却无法访问
  10. 中国防毒软件市场深度研究分析报告
  11. 北理工嵩天Python语言程序设计笔记
  12. Java个人职业规划目标改进_java个人职业发展方向规划范文
  13. VIN码识别技术加速汽车后市场服务速度
  14. 【读书笔记】YARN架构设计与实现原理
  15. 关于个人电脑C盘清理的一些小整合
  16. 系統封裝(6)--EZBOOT設置
  17. 当今天下大势——个人观点
  18. 数学建模层次分析法一致性检验建立
  19. 使用cordova把h5应用打包成apk
  20. 聚合支付哆啦宝并入京东数科 原股东悉数退出

热门文章

  1. 网络API接口的详细使用
  2. 架构师3- zk源码分析
  3. 【LeetCode】妙用位运算解题
  4. 服务器nodejs连接mysql_《使用nodejs连接mysql数据库》
  5. 华为低端交换机堆叠配置
  6. 20个最值得一读的科技名言
  7. 计算机屏幕很暗怎么办,如果aoc显示屏的亮度很暗怎么办
  8. 充分利用计算机辅助审计,计算机辅助审计的主要作用
  9. obj文件批量格式转换(glb/gltf)与压缩
  10. 拯救者Y9000P ubuntu18+win11 ubuntu18外界显示器不好用,但windows系统好用的解决办法