请判断一个链表是否为回文链表。
示例 1:
输入: 1->2输出: false
题解
这题存在两种做法, 第一种比较简单,就是直接将链表转化为数组,求数组的回文,这个做法太多了,所以不讲了,只讲链表的回文
我们知道递归可以优先将链表到最底部,然后在进行回溯的一个操作,可以利用这个能力,设置加一个头结点,在将链表到最底部,然后将头结点向后走,而递归会不断向前走,这就形成了类似于数组的双指针的做法
let frontPointer;
const recursivelyCheck = (currentNode) => {
if (currentNode !== null) {
if (!recursivelyCheck(currentNode.next)) {
return false;
}
if (currentNode.val !== frontPointer.val) {
return false;
}
frontPointer = frontPointer.next;
}
return true;
}
var isPalindrome = function(head) {
frontPointer = head;
return recursivelyCheck(head);
};
