作为一个java初学者,最近遇到了回文链表结构这个难题,经过一番学习总算搞清楚个大概。

先来说一下什么是回文链表,会问链表在我们生活中经常能够遇到。会问链表的结构就是

例如:1->2->3->2->1。我们将它反转过来还是与原链表相同,这种就称为回文结构。

具体方法:1.先找到链表的中间位置

2.然后将中间位置的链表反转

3.从两边向中间遍历

代码如图

class Node {public int data;public Node next;//构造方法public Node(int data) {this.data = data;this.next = null;}
}
public class MyLinkedList {public Node head;//保存单链表的头节点的引用public boolean chkPalindrome() {//判断头节点是否为空if(this.head == null) {return false;}//判断头节点的next是否为空,如果为空,证明只有一个链表,就是回文链表if(this.head.next == null) {return true;}//找出链表的中间位置Node fast = this.head;Node slow = this.head;while(fast != null && fast.next != null) {fast = fast.next.next;slow = slow.next;}//把中间位置之后的链表反转Node cur = slow.next;while(cur != null) {Node curNext = cur.next;cur.next = slow;slow = cur;cur = curNext;}//从两边向中间遍历while(slow != this.head) {if(slow.data != this.head.data) {return false;}if(this.head.next == slow) {return true;}slow = slow.next;this.head = this.head.next;}return true;}
}

类似的链表题还有很多,我也是刚刚接触,这个博客就当复习了。如果有不对的地方还请大佬指正。

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

  1. 链表题目---4 删除链表中重复的结点 和 判断链表是否为回文链表

    删除链表中重复的结点 /* struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {} ...

  2. 【链表】判断一个链表是否是回文链表

    思路一:链表转为字符串,判断字符串是否是回文串 思路二:双指针 可以使用快慢指针,快指针的速度是慢指针的两倍,当快指针到达链表尾部时 ,慢指针到达中间位置.将慢指针之后的部分进行反转,再与前半部分比较 ...

  3. LeetCode234题:回文链表

    题目描述: 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 思路分析: 迭代法: ...

  4. 链表-回文链表(复制+双指针法)

    题意: 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 思路: 这里如果是数组列表 ...

  5. 【剑指Offer专题】链表系列:从尾到头打印链表、反转链表、回文链表、合并两个排序的链表(C++和Python实现)...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 剑指Offer(三):从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每 ...

  6. 234. Palindrome Linked List 回文链表

    请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否用 O(n) 时间复 ...

  7. python回文链表_leetcode链表之回文链表

    序 本文主要记录一下leetcode链表之回文链表 题目 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2-> ...

  8. LeetCode 234. 回文链表(快慢指针+链表反转)

    1. 题目 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false示例 2: 输入: 1->2->2->1 输出: true进阶: 你能否用 O(n) ...

  9. [LeetCode] 234. Palindrome Linked List 回文链表

    Given a singly linked list, determine if it is a palindrome. Example 1: Input: 1->2 Output: false ...

  10. leet234.回文链表

    题目: 请检查一个链表是否为回文链表. 进阶: 你能在 O(n) 的时间和 O(1) 的额外空间中做到吗? 分析: 该题不够严谨,要满足时间.空间复杂度要求,应该要求链表无环 回文链表要求正逆方向对应 ...

最新文章

  1. Ajax实现无刷新树
  2. 以前不知道的,现在知道了(微机原理)
  3. prefetch下载SRA 数据
  4. 手把手教你搭建Linux开发环境(VMware+Ubuntu)(四)——gcc编译器的安装和使用
  5. Java Number 类
  6. linux 更改mysql的数据库目录
  7. 计算机栏和用户栏有啥区别,任务栏与桌面的区别是
  8. [翻译]Hystrix wiki–How it Works
  9. 选择排序算法(C++版)
  10. form触发2次 layui_Springboot+layui上传文件携带参数前后台代码
  11. JAVA毕设项目宠物店管理系统设计与实现(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)
  12. sql server设置星期一为每周第一天
  13. Java处理时间,得到指定几天前的凌晨0点时间戳
  14. 华为煤矿军团首登央视 | 发布会金句爆棚
  15. 网易2017春招[编程题]赶去公司@Java
  16. SpringBoot库存管理系统,拿来学习真香
  17. EasyExcel与EasyPoi性能对比
  18. Learning Synergies between Pushing and Grasping with Self-supervised Deep Reinforcement Learning
  19. 使用vlookup嵌套INDIRECT函数实现跨表数据引用
  20. 网站性能优化工具大全

热门文章

  1. 盗墓笔记—阿里旺旺ActiveX控件imageMan.dll栈溢出漏洞研究
  2. [乱七八糟]《进化论——人类科学史上最大的谎言》
  3. 组合数学在软件领域的运用
  4. 淘宝按图搜索商品(拍立淘)、图片上传API接口、图片识别商品接口img2text标题栏、链接及图片相关参数字段API数据获取调用示例
  5. s深度linux没有ll等命令的解决办法
  6. 计算机毕业设计之java+springboot基于vue的4S店车辆管理系统
  7. 服务器上显示公式,Markdown中实时显示数学公式的方法
  8. android实现半透明属性,Activity透明/半透明效果的设置transparent(两种实现方法)
  9. android实现activity半透明色
  10. 鸿蒙系统和安装包,鸿蒙系统安装包