链表的回文结构,时间复杂度O(n),空间复杂度O(1)

链表的回文结构

链表的回文结构,时间复杂度O(n),空间复杂度O(1)

bool chkPalindrome(ListNode* head) {
        if (!head || !head->next) return true;
        ListNode *slow = head, *fast = head;
        while (fast->next && fast->next->next) {
            slow = slow->next;
            fast = fast->next->next;
        }
        ListNode *last = slow->next, *pre = head;
        while (last->next) {
            ListNode *tmp = last->next;
            last->next = tmp->next;
            tmp->next = slow->next;
            slow->next = tmp;
        }
        while (slow->next) {
            slow = slow->next;
            if (pre->val != slow->val) return false;
            pre = pre->next;
        }
        return true;
    }

猜你喜欢

转载自blog.csdn.net/heart_leader/article/details/79881989