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;
}

results matching ""

    No results matching ""