코테준비 - Palindrome Linked List

정상화·2023년 2월 26일

LeetCode

목록 보기
204/222

Palindrome Linked List


class Solution {
public:
    bool isPalindrome(ListNode *head) {
        auto slow = head, fast = head;

        ListNode *prev = NULL, *prePrev = NULL;
        while (fast && fast->next) {
            prePrev = prev;
            prev = slow;
            slow = slow->next;
            fast = fast->next->next;
            if (prev && prePrev) {
                prev->next = prePrev;
            }
        }
        auto reverseScanner = prev;
        if (fast) {
            slow = slow->next;
        }
        head->next = NULL;
        while (slow) {
            if (reverseScanner->val != slow->val) {
                return false;
            }
            reverseScanner = reverseScanner->next;
            slow = slow->next;
        }
        return true;
    }
};
profile
백엔드 희망

0개의 댓글