题解 | #链表的回文结构#

链表的回文结构

https://www.nowcoder.com/practice/d281619e4b3e4a60a2cc66ea32855bfa

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};*/
class PalindromeList {
public:
    ListNode* middleNode(ListNode* head) 
    {
        ListNode* slow = head;
        ListNode* fast = head;
        while(fast && fast->next)
        {
            slow = slow->next;
            fast = fast->next->next;
        }
        return slow;
    }

    ListNode* reverseList(ListNode* head) 
    {
        if(head == NULL)
        {
            return head;
        }
        ListNode* n1, *n2, *n3;
        n1 = NULL;
        n2 = head;
        n3 = n2->next;
        while(n2)
        {
            n2->next = n1;
            n1 = n2;
            n2 = n3;
            if(n3 != NULL)
                n3 = n3->next;
        }
        return n1;
    }
    bool chkPalindrome(ListNode* A) 
    {
        ListNode* mid = middleNode(A);
        ListNode* newmid = reverseList(mid);

        while(A && newmid)
        {
            if(A->val != newmid->val)
            {
                return false;
            }
            A = A->next;
            newmid = newmid->next;
        }

        return true;
    }
};



全部评论

相关推荐

点赞 评论 收藏
分享
xwqlikepsl:感觉很厉害啊,慢慢找
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务