题目

关于回文问题的题目在上一篇文章已经描述,读者可以查看上一篇文章,这篇文章详细描述进阶问题。

进阶:如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1).


思路

通过改变链表右半区的结构,使得整个右半区反转,最后指向中间节点。

原链表 新链表
1->2->3->2->1 1->2->3(3指向null)<-2<-1
1->2->3->3->2->1 1->2->3(3指向null)<-3<-2<-1

源码

public class Node{public int value;public Node next;public Node(int data){this.value=data;}
}public boolean isPanlindrome3(Node head){if(head==null||head.next==null){return true;}Node n1=head;Node n2=head;while(n2.next!=null&&cur.next.next!=null){//查找中间节点n1=n1.next;//n1---中部n2=n2.next.next;//n2----结尾}n2=n1.next//n2---右部份第一个节点n1.next=null//mid.next----nullNode n3=null;//对右半区进行反转while(n2!=null){n3=n2.next;//n3----保存下一个节点n2.next=n1;//下一个反转节点n1=n2;//n1移动n2=n3;//n2移动}n3=n1;//n3----保存最后一个节点n2=head;//n2----左边第一个节点boolean res=true;while(n1!=null&&n2!=null){//检查回文if(n1.value!=n2.value){res=false;break;}n1=n1.next;//从右部到中部n2=n2.next;//从左部到中部}n1=n3.next;n3.next=null;while(n1!=null){//恢复列表n2=n1.next;n1.next=n3;n3=n1;n1=n2;}return res;
}

链表问题7——判断一个链表是否为回文结构(进阶)相关推荐

  1. 数据结构与算法之打印两个有序链表公共部分和判断一个链表是否具有回文结构

    数据结构与算法之打印两个有序链表公共部分和判断一个链表是否具有回文结构 目录 打印两个有序链表公共部分 判断一个链表是否具有回文结构 1. 打印两个有序链表公共部分 1.问题描述 思路:Node1和N ...

  2. 链表问题7——判断一个链表是否为回文结构

    题目 给定一个链表的头节点head,请判断该链表是否为回文结构. 输入链表 输出 1->2->1 true 1->2->2->1 true 15->6->15 ...

  3. 常考数据结构与算法:判断一个链表是否为回文结构

    题目描述 给定一个链表,请判断该链表是否为回文结构. 示例1 输入 [1,2,2,1] 返回值 true 思路: 双指针,快指针一次走两步,慢指针一次走一步,快指针走完,慢指针走到中点.然后将中点开始 ...

  4. 算法练习day9——190327(“之” 字形打印矩阵、在行列都排好序的矩阵中找数、打印两个有序链表的公共部分、判断一个链表是否为回文结构)

    1."之" 字形打印矩阵 [题目] 给定一个矩阵matrix, 按照"之" 字形的方式打印这个矩阵, 例如: 1 2 3 4 5 6 7 8 9 10 11 1 ...

  5. 牛客题霸 [判断一个链表是否为回文结构] C++题解/答案

    判断一个链表是否为回文结构 题目描述 给定一个链表,请判断该链表是否为回文结构. 题解: 直接将链表内的数据存入string中,然后从两端开始向中间判断即可 代码: /*** struct ListN ...

  6. 判断一个链表是否为循环单链表

    判断一个链表是否为循环单链表: #设置两个指针(fast, slow),slow步长为1,fast步长为2, 大概的思路如下: 如果链表为循环单链表,则fast与slow必定相遇. 如果链表不为循环单 ...

  7. c语言数据结构判断回文数,C++数据结构与算法之判断一个链表是否为回文结构的方法...

    本文实例讲述了C++判断一个链表是否为回文结构的方法.分享给大家供大家参考,具体如下: 题目: 给定一个链表头节点head,请判断是否为回文结构 例如: 1->2->1 true 1-&g ...

  8. 判断一个链表是否为回文结构【Java实现】

    题目:给定一个链表的头节点head,请判断该链表是否为回文结构. 如:1 2 1 返回true 1 2 2 1 返回true 1 2 3 返回false 思路一: 利用栈,从左到右遍历链表,然后将每一 ...

  9. 牛客-判断一个链表是否为回文结构

    题目 描述 给定一个链表,请判断该链表是否为回文结构. 回文是指该字符串正序逆序完全一致. 数据范围: 链表节点数 0≤n≤10 ,链表中每个节点的值满足 ∣val∣≤10 思路 把链表反转一下,然后 ...

最新文章

  1. 线性规划图解法求最优解_干货 | 线性规划知识点汇总
  2. C++标准库 第七章 STL迭代器
  3. 自学python需要什么_自学Python编程有什么要求
  4. 基于JAVA+SpringMVC+MYSQL的球队管理系统
  5. Springboot+WebSocket
  6. linux 目录提权,【安全科普】Linux提权——利用可执行文件SUID
  7. Python+Flask+MysqL的web建设技术过程
  8. JAVA学习-----容器和数据结构
  9. 麟龙指标通达信指标公式源码_通达信麟龙KDJ多周期副图指标 源码(图文)
  10. adb调试工具下载使用
  11. ArcGIS API for JavaScript 加载水经注离线地图
  12. Python 代码练习
  13. 一些易被忽视且难度较高的Web前端面试题汇总
  14. 单网卡实现 双IP 双网段(内外网)同时运行
  15. Java 垃圾回收算法
  16. CAML语法- Query写法
  17. 你需要一份更绝佳的文章排版与设计
  18. php中mysql_assoc,在PHP中使用mysql_fetch_assoc时出现警告
  19. 数字电路课设_电子抢答器
  20. 如何说服导师放你去实习?

热门文章

  1. 小米开源FALSR算法:快速精确轻量级的超分辨率模型
  2. 李飞飞、吴恩达、Bengio等人的15大顶级深度学习课程,你收集全了吗?
  3. 为了智能驾驶,李彦宏要改造城市道路
  4. 7月Python和机器学习最佳开源项目Top 10!
  5. AI一分钟|Uber撤裁100名无人车操作员;京东金融将融资130亿人民币
  6. 李飞飞等提出新的迭代视觉推理框架,在ADE上实现8.4 %的绝对提升
  7. Python超过R,成为数据科学和机器学习的首选语言!
  8. 图解:电商支付架构设计
  9. 对业务系统的监控 No.118
  10. 一行代码,得到最强时序基线!