leetcode 234 Palindrome Linked List C++

来源:互联网 发布:java注释的作用 编辑:程序博客网 时间:2024/05/17 04:42

得到链表后半段的首地址,然后翻转,然后依次比较即可。

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


0 0
原创粉丝点击