回文链表


给定一个链表的 头节点 head 请判断其是否为回文链表。

如果一个链表是回文,那么链表节点序列从前往后看和从后往前看是相同的。

1.试解栈

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public:
bool isPalindrome(ListNode* head) {
if (head->next == nullptr) return true;
//1.stk push
stack<ListNode*> stk;
ListNode* p = head;
while (p) {
stk.push(p);
p = p->next;
}
//2.traverse linklist
p = head;
while (p) {
if (stk.top()->val != p->val) return false;
stk.pop();
p = p->next;
}
return true;
}
};

2.数组+双指针

1

3.递归

1

4.快慢指针

1