请判断一个链表是否为回文链表。
示例 1:
输入: 1->2
输出: false
示例 2:
输入: 1->2->2->1
输出: true
解题思路
先把链表转化为数组,再对数组进行判断
如果有一对不对直接返回false
只有每一对都一样的情况下才返回true
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
bool isPalindrome(struct ListNode* head){
struct ListNode* p=head;
int size=0;
while(p){
size++;
p=p->next;
}
if(size!=0){
int a[size],i=0;
p=head;
while(p){
a[i]=p->val;
i++;
p=p->next;
}
int temp=0;
for(int i=0,j=size-1;i<j;i++,j--){
if(a[i]!=a[j]) return false;
}
}
return true;
}