判断是否为回文链表
利用快慢指针:当快指针走到末尾时,慢指针即指向链表中点
class Solution {
/**
* 判断是否为回文链表
*
* @param head ListNode类 链表头
* @return bool布尔型
*/
public boolean isPalindrome(ListNode head) {
// write code here
if (head == null || head.next == null) {
return true;
}
ListNode fast = head;
ListNode slow = head;
while (fast != null && fast.next != null) {
fast = fast.next.next;
slow = slow.next;
}
ListNode pre = null;
ListNode p = slow;
while (p != null) {
ListNode tem = p.next;
p.next = pre;
pre = p;
p = tem;
}
while (pre != null) {
if (pre.val == head.val) {
pre = pre.next;
head = head.next;
} else {
return false;
}
}
return true;
}
}