- 参与人数:797时间限制:3秒空间限制:32768K
- 算法知识视频讲解
题目描述
对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。
给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。
1->2->2->1
返回:true
/*struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};*/
class PalindromeList {
public:
bool chkPalindrome(ListNode* A) {
// write code here
//可以理解为复制链表首地址,之后 两次要用到
ListNode*cul=A;
stack<int>a;
while(A)
{
a.push(A->val);
A=A->next;
}
while(cul)
{
if(a.top()!=cul->val)
{
return false;
}
a.pop();
cul=cul->next;
}
return true;
}
};