0%

面试题 02.06. 回文链表

面试题 02.06. 回文链表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
* 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 *walker = head, *runner = head;
ListNode* pre = nullptr;
while(runner && runner->next)
{
runner = runner->next->next;
auto next = walker->next;
walker->next = pre;
pre = walker;
walker = next;
}
if(runner)
walker = walker->next;
while(pre && walker && pre->val == walker->val) {
pre = pre->next;
walker = walker->next;
}
return !(pre || walker);
}
};