Description:
Given a singly linked list, determine if it is a palindrome
问题描述:
给条单链表,判断是否为回文链表
回文:
正读反读都一样
Ex:
1->2->3->2->1
—–回文链表
1->2->2->1
—-回文链表
1->3->2
—-非回文链表
限定条件:
时间复杂度O(n) ,空间复杂度O(1)
解法一:
思路:
第一步:用两个指针(快指针和慢指针)找到链表的中间结点
注意处理链表个数为奇数的情况,最后慢指针落在后半部分链表的开头
第二步:将后半部分链表进行反转操作(这个操作非常重要,要背下来)
第三步:将前半部分链表中的元素和后半部分链表中的元素进行逐一比较,最后慢指针到达末尾结点的后继结点(null),则为回文链表,否则不是。
###Code:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val