重点是:

1.快慢指针找到链表的中点。快指针一次走两步,慢指针一次走一步,分清奇偶数情况。

2.反转链表。pre代表已经反转好的,每次将当前节点指向pre

/*
快慢指针得到链表中间,然后用206题方法反转后半部分,然后比较
*/
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public boolean isPalindrome(ListNode head) {
//快慢指针
ListNode slow = head,fast = head;
while (fast!=null&&fast.next!=null)
{
slow = slow.next;
fast = fast.next.next;
}
//节点如果是奇数,fast应该不是null,如果是偶数就是null
if (fast!=null)
{
slow = reverseList(slow.next);
}
else slow = reverseList(slow);
while (slow!=null)
{
if (head.val!=slow.val) return false;
slow = slow.next;
head = head.next;
}
return true;
}
public ListNode reverseList(ListNode head) {
ListNode pre = null;
while (head!=null)
{
//下边要改变head,所以先保存下来next
ListNode next = head.next;
//将当前节点指向pre
head.next = pre;
//更新pre
pre = head;
//更新head往下遍历
head = next;
}
return pre;
}

最新文章

  1. java IO流 之 其他流
  2. How to acquire an Android phone with locked bootloader?
  3. 【Mail】JavaMail发送带附件的邮件(二)
  4. validation验证器指定action中某些方法不需要验证
  5. Redis集群知识解析
  6. ASP.NET WebForm中用async/await实现异步出人意料的简单
  7. Http协议之Request和Response
  8. Gunicorn + Django 部署
  9. 使--no-ri --no-rdoc成为gem安装的默认选项
  10. 查看堵塞的SQL
  11. NSArray和NSSet的区别
  12. RACSignal的一些常用用法
  13. js异步梳理:1.从浏览器的多进程到JS的单线程,理解JS运行机制
  14. ORACLE多表关联UPDATE 语句[z]
  15. Window上,启动Tomcat服务之后,关闭启动窗口,服务器也随之关闭
  16. android 注入so
  17. spring boot redis -> @Cacheable,@CacheEvict, @CachePut
  18. JVM进程状态监控
  19. 接收与发送邮件(XE10.2+WIN764)
  20. erlang 一个高性能web框架 Cowboy 的使用笔记

热门文章

  1. 蒲公英 · JELLY技术周刊 Vol.32: 前端的自我进化之路
  2. python语法元素的名称
  3. 冲刺随笔——Day_Three
  4. 4、Spring Cloud Eureka
  5. PyQt(Python+Qt)学习随笔:QWidget部件的palette属性以及ColorGroup、colorRole的用途和含义
  6. 第15.37节 PyQt(Python+Qt)入门学习:containers容器类部件QMdiArea多文档界面部件详解及编程开发案例
  7. PyQt(Python+Qt)学习随笔:QTreeWidgetItem项的子项排序sortChildren及获取项对应的树型部件对象方法
  8. java后端开发学习路线
  9. ES6新特性之箭头函数与function的区别
  10. LeetCode初级算法之字符串:242 有效的字母异位词