给定一个链表的 头节点 head ,请判断其是否为回文链表。
如果一个链表是回文,那么链表节点序列从前往后看和从后往前看是相同的。
示例 1:
输入: head = [1,2,3,3,2,1]
输出: true
示例 2:
输入: head = [1,2]
输出: false
提示:
链表 L 的长度范围为 [1, 105]
0 <= node.val <= 9
解题思路:
新建容器,将链表元素按顺序存入数组中,遍历数组看是否从前往后看和从后往前看都相同,相同返回true
代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
bool isPalindrome(ListNode* head) {
vector<int> ans;
while(head){
ans.push_back(head -> val);
head = head -> next;
}
for(int i = 0; i < ans.size() / 2; i++){
if(ans[i] != ans[ans.size() - i - 1] ){
return false;
}
}
return true;
}
};