234. Palindrome Linked List
- Total Accepted: 56144
- Total Submissions: 191356
- Difficulty: Easy
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?
Subscribe to see which companies asked this question
Show Similar Problems
Have you met this question in a real interview?
Yes
No
思路:快慢指针,将前半链表翻转,然后与后面链表比较
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
bool isPalindrome(ListNode* head) {
ListNode *slow=head,*fast=head,*rev=NULL,*temp;
while(fast&&fast->next)
{
fast=fast->next->next;
temp=slow->next;
slow->next=rev;
rev=slow;
slow=temp;
}
if(fast) slow=slow->next;
while(slow)
{
if(slow->val!=rev->val) return false;
slow=slow->next;
rev=rev->next;
}
return rev==NULL;
}
};