题目描述

请判断一个链表是否为回文链表。

示例 1:

输入: 1->2
输出: false

示例 2:

输入: 1->2->2->1
输出: true

进阶:
你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?

解题

思路1:直接利用List的顺序存储性,解题

/*** 思路1:数组存储法* 时间复杂度O(n),空间复杂度O(n)* @param head* @return*/public boolean isPalindrome1(ListNode head) {List<Integer> list = new ArrayList<Integer>();while(head!=null) {list.add(head.val);head=head.next;}int size = list.size();for(int i=0;i<size/2;i++) {if(list.get(i).intValue() != list.get(size-1-i).intValue() ) {return false;}}return true;}

**思路2:**利用栈的入栈、出栈,改变集合顺序原理

public boolean isPalindrome(ListNode head) {Stack<Integer> s = new Stack<>();ListNode cur = head;//将整个链表入栈,之后出栈的顺序其实就是链表的逆序while(cur != null){s.push(cur.val);cur = cur.next;}cur = head;while(!s.isEmpty()){if(s.pop() != cur.val){return false;}cur = cur.next;}return true;}

思路3

/*** 思路3:* 1.快慢指针找到中间节点* 2.反转后半段链表* 3.顺序比较链表前后半段,都相等则为回文* 时间复杂度O(n),空间复杂度O(1)* @param head* @return*/public boolean isPalindrome(ListNode head) {if(head == null) {return true;}ListNode slow = head, fast=head, mid=null;while(fast!=null && fast.next!=null) {slow = slow.next;fast = fast.next.next;}mid = slow;ListNode cur = mid, next = mid.next, nNext=null;//链表从中间截断cur.next = null;while (next != null) {nNext = next.next;next.next = cur;cur = next;next = nNext;}while(cur != null) {if(head.val != cur.val) {return false;}head = head.next;cur = cur.next;}return true;}

2019-03-22-算法-进化(回文链表)相关推荐

  1. leetcode算法题--回文链表

    原题链接:https://leetcode-cn.com/problems/palindrome-linked-list/ 1.链表转数组 bool isPalindrome(ListNode* he ...

  2. access中判断回文的代码_前端也来点算法(TypeScript版) | 2 - 回文数和回文链表

    算法采用 TS 进行编写.  回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数.回文链表是链表节点的值和回文数有相同规律的链表. " 回文数 这个数字可以看成是以中心对称分布的 ...

  3. 领扣算法:234 回文链表

    请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 输入参数: public bool ...

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

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

  5. 判断字符串_python实现--判断回文字符串、回文链表、回文数

    所谓回文字符串,就是正读和反读都一样的字符串,比如"level"或者"noon"等等就是回文串.即是对称结构Python系列教程,免费获取,遇到bug及时反馈, ...

  6. 最长回文子串和回文链表

    回文子串和回文链表 文章目录 回文子串和回文链表 一.最长回文子串 1.题目描述 2.分析 3.代码实现 二.判断回文链表 1.问题描述 2. 分析 3.代码 4.优化 三.回文子串 1.问题描述 2 ...

  7. LeetCode234题:回文链表

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

  8. python判断字符串回文_python实现--判断回文字符串、回文链表、回文数

    所谓回文字符串,就是正读和反读都一样的字符串,比如"level"或者"noon"等等就是回文串.即是对称结构 Python系列教程,免费获取,遇到bug及时反馈 ...

  9. Leetcode(234)——回文链表

    Leetcode(234)--回文链表 题目 给你一个单链表的头指针 head ,请你判断该链表是否为回文链表.如果是,返回 true :否则,返回 false . 示例 1: 输入:head = [ ...

最新文章

  1. Repeater控件的使用
  2. 文件监视器——Filemon
  3. 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 2) 【部分题解】
  4. windows bat脚本中调用Cygwin并执行命令
  5. PHP笔记-获取客户端IP及平台及浏览器
  6. 2017-2018-1 20155339 《信息安全系统设计基础》第三周学习总结
  7. django 1.8 官方文档翻译:13-3 日志
  8. 半桥LLC谐振变换器及同步整流MATLAB仿真(一)
  9. 深度学习中初始化权重
  10. matlab 修改heatmap colorbar 热图
  11. 神州租车还有这些新玩法?打造了行业新标杆
  12. Springboot + Shiro——MD5 盐值加密(配置)
  13. RTMP 直播推流时延
  14. 青蛙与蚊子——C++练习题
  15. python中输出某段文字_怎样用Python提取文本中某一段文字
  16. linux安装i219网卡驱动下载,Linux redhat 6.5 安装网卡I219-LM 驱动
  17. HTML5期末考核大作业:美食主题网站设计——沪上美食(9页)带Flash动画视频导航下拉表单 HTML+CSS+JavaScript
  18. java批注_java中批注作用
  19. 人工智能如何从科幻走向现实中?
  20. 优秀的程序员热爱偷懒

热门文章

  1. php Trait 基础应用讲解
  2. python opencv 图像切割_【OpenCV+Python】图像的基本操作与算术运算
  3. 计算机导论上机模拟,计算机导论模拟考试题6份完整版.doc
  4. java爬虫工具xpath提取,2020-07-16--爬虫数据提取--xpath
  5. docker没有下载完全_会用Docker的人都别装了,这多简单呐
  6. 爆笑!物理书上的照片能不能好好选选啊喂!
  7. 普通人改变命运最关键的这几种方法
  8. 为什么祖国没有农历生日? | 今日最佳
  9. 牛顿儿时成绩很差,5岁开始接触物理,也许是他如此伟大的唯一原因!
  10. shell查找命令大全