leetcode 234.回文链表

请判断一个链表是否为回文链表。

示例 1:

输入: 1->2
输出: false

示例 2:

输入: 1->2->2->1
输出: true
解题思路
根据给出的示例找规律,可以看出回文链表就是,一个链表的前半部分和后半部分相等,而且长度不能是1,3,5...这种奇数,这样我们就可以将一个链表遍历,然后将其值存放在一个数组中,
最后对这个数组进行遍历看前半部分和后半部分是否相等。
正常解法:
var isPalindrome = function (head) {
        let arr = []
        while (head) {
            arr.push(head.val)
            head = head.next
        }
        if (arr.length % 2 !== 0) {
            return false
        } else {
                for (var i = 0; i < arr.length/2; i++) {
                    if (arr[i] !== arr[arr.length -1-i]){
                        return false
                    }else {
                        return true
                    }
                }
        }
    };
加入一个链表是 1,2,2,4
那么就是第一个和最后一个比较,第二个和倒数第二个比较。所以就是
arr[i] !== arr[arr.length -1-i]。
递归解法
var isPalindrome = function (head, queue = []) {
        if (!head) {
            return true;
        }
        queue.push(head.val);
        let flag = isPalindrome(head.next, queue);
        return queue.shift() === head.val && flag;
    }

 https://www.javascriptcn.com/read-141395.html














 
不积跬步无以至千里
原文地址:https://www.cnblogs.com/lyt0207/p/12380382.html