题目

给定一个链表的头节点head,请判断该链表是否为回文结构。

输入链表 输出
1->2->1 true
1->2->2->1 true
15->6->15 true
1->2->3 false

思路

方法一:

利用栈结构,遍历链表并将节点依次压入栈中,遍历完后,依次弹栈,如果一个链表是回文结构,弹栈顺序对应的值和原链表顺序对应的值应该是一样的。

方法二:

类似方法一,不过不需要将节点全部压栈,仅仅将右半区压栈,并和链表左半部分比较。

举例:1->2->2->1,左半区:1->2;右半区: 2->1。 1->2->3->2->1,左半区:1->2;右半区:2->1.


源码

方法一:

public class Node{public int value;public Node next;public Node(int data){this.value=data;}
}public boolean isPanlindrome1(Node head){Stack<Node> stack=new Stack<Node>();Node cur=head;while(cur!=null){stack.push(cur);cur=cur.next;}while(head!=null){if(head.value!=stack.pop().value){return false;}head=head.next;}return true;
}

方法二:

public class Node{public int value;public Node next;public Node(int data){this.value=data;}
}public boolean isPanlindrome2(Node head){if(head==null||head.next==null){return true;}Node right=head.next;Node cur=head;while(cur.next!=null&&cur.next.next!=null){right=right.next;cur=cur.next;}Stack<Node> stack=new Stack<Node>();while(right!=null){stack.push(right);right=right.next;}while(!stack.isEmpty()){if(head.value!=stack.pop().value){return false;}head=head.next;}return true;
}

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

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

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

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

    题目 关于回文问题的题目在上一篇文章已经描述,读者可以查看上一篇文章,这篇文章详细描述进阶问题. 进阶:如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1). 思路 通过改变链表右半区 ...

  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. Thrift的服务器和客户端Python案例
  2. vmware响应时间过长_性能调优高并发下如何缩短响应时间
  3. Hacking Team Flash 0day漏洞学习笔记
  4. 【转】strcpy溢出的攻击示例
  5. 数据结构【队列专题】
  6. leetcode 381. O(1) 时间插入、删除和获取随机元素 - 允许重复
  7. python多继承_python作用域和多继承
  8. 关于c/c++语言中*和*使用的详细分析
  9. PTA-1015——Reversible Primes
  10. 记录并分析一些软件,以便以后换电脑重新安装(不定时更新)
  11. CentOS7.0+phpwind9.0.1环境搭建
  12. 希尔伯特变换 matlab,MATLAB的实现Hilbert变换程序_matlab
  13. Echarts迁徙图简单图片实现
  14. 开发者分享 | AXI 基础第 3 讲-使用 AXI VIP 作为 AXI4 主 (Master) 接口的协议检查工具...
  15. 在滴滴,我是如何指数级提升开发技术的?---转自星光社的戴铭
  16. Android实现VR查看图片
  17. uniapp中H5网页和打包app分别生成二维码
  18. 工作站 显卡 测试软件,绝对专业!14块工作站显卡测试(图)
  19. 搭建一个颜值超高的发卡网站
  20. 汉诺塔问题的解决思想

热门文章

  1. TensorFlow AI 新品更易用!联手NVIDIA,支持Swift和JavaScript
  2. 面试官问:Redis变慢了,你会怎么排查?
  3. delete后加 limit是个好习惯么 !
  4. 百度 71 个炸天的开源项目!你知道几个?
  5. Spring Boot + Vue.js 实现前后端分离(附源码)
  6. 短短的 RESTful API 设计规范
  7. 一个线程罢工的诡异事件
  8. IntelliJ IDEA 2019.3 发布,启动更快,性能更好(新特性解读)
  9. 推荐100份:高并发高可用和中台一网打尽
  10. SpringBoot第十一篇:springboot集成swagger2,构建优雅的Restful API