已知一个单链表的头节点 head
,请你判断该链表是否为回文链表。如果是,返回 true
;否则,返回 false
。
输入:head = [1,4,8,4,1] 输出:true
解题:
(1)数组+双指针
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
bool isPalindrome(struct ListNode* head){
int vals[100000], vals_num = -1;
while (head != NULL) {
vals[++vals_num] = head->val;
head = head->next;
}
for (int i = 0, j = vals_num ; i < j; ++i, --j) {
if (vals[i] != vals[j]) {
return false;
}
}
return true;
}