Leetcode 234. Palindrome Linked List

来源:互联网 发布:php.ini设置文件大小 编辑:程序博客网 时间:2024/06/06 07:08

Given a singly linked list, determine if it is a palindrome.
Follow up:
Could you do it in O(n) time and O(1) space?
题目是求单链表是否是回文。根据在平台上测试结果知:12->34->12是回文,而不是说 12->343 ->21是回文,这个概念要搞清楚。解题思路很简单,用两个节点,一个一次遍历一个结点,一个一次两个,找到中点结点,把中点之后的单链表反转然后和前面结点一 一比对。

class Solution {public:    bool isPalindrome(ListNode* head) {        if(head==NULL||head->next==NULL)            return true;        ListNode* slow=head;        ListNode* fast=head;        while(fast->next!=NULL&&fast->next->next!=NULL){            slow=slow->next;            fast=fast->next->next;        }        slow->next=reverseList(slow->next);        slow=slow->next;        while(slow!=NULL){            if(head->val!=slow->val)                return false;            head=head->next;            slow=slow->next;        }        return true;    }    ListNode* reverseList(ListNode* head) {        ListNode* pre=NULL;        ListNode* next=NULL;        while(head!=NULL){            next=head->next;            head->next=pre;            pre=head;            head=next;        }        return pre;    }};
0 0
原创粉丝点击