/**
* 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) {
if(!head || !head->next) return true;
ListNode *newHead = new ListNode(0), *p, *q, *t;
newHead->next = head;
int len = 0, cnt = 1;
for(p = head; p; p = p->next) len++;
for(p = head; cnt < len/2; cnt++) {
q = p->next;
p->next = q->next;
q->next = newHead->next;
newHead->next = q;
}
if(len % 2) q = p->next->next;
else q = p->next;
p = newHead->next;
for(cnt = 0; cnt < len/2; p = p->next, q = q->next, cnt++) {
if(p->val != q->val) return false;
}
return true;
}
};
【leetcode 链表】234. Palindrome Linked List C++
最新推荐文章于 2024-08-13 14:56:59 发布