234. Palindrome Linked List
naive迭代
public boolean isPalindrome(ListNode head) {
// split
ListNode fast = head,
slow = head;
while (fast != null && fast.next != null) {
fast = fast.next.next;
slow = slow.next;
}
// reverse
ListNode node = slow;
ListNode pre = null;
while (node != null) {
ListNode tmp = node.next;
node.next = pre;
pre = node;
node = tmp;
}
// compare
while (pre != null) {
if (pre.val != head.val) {
return false;
}
pre = pre.next;
head = head.next;
}
return true;
}