目录
最近玩OJ赛,发现对算法的理解还需要更加扎实,code能力还可以进一步提升,所以做这样一个算法的系列文章,用于记录学习心得,交流经验,更好地进步和成长。
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。
示例1

输入:head = [1,2,2,1] 输出:true
示例 2

输入:head = [1,2] 输出:false
提示:
[1, 105] 内0 <= Node.val <= 9预知
LeetCode是核心代码模式,所以只需要考虑核心算法,输入由系统自动完成,最后的输出以return返回;
思路
将链表结点的值存储到数组中,然后头尾元素对比即可;
时间复杂度O(N), 空间复杂度O(N)
C++
- /**
- * 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> abs;
- while(head){
- abs.emplace_back(head->val);
- head = head->next;
- }
-
- for(int i=0,j= abs.size()-1;i
- if(abs[i] != abs[j]){
- return false;
- }
- }
- return true;
- }
- };
总结
以上就是今天要讲的内容,本文仅仅简单讲解了《234. 回文链表》这一题目,对链表和数组结合应用有了一定的掌握
题目来源
来源:力扣(LeetCode)
链接:234. 回文链表 - 力扣(LeetCode)