zoukankan      html  css  js  c++  java
  • 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














     
    不积跬步无以至千里
  • 相关阅读:
    [BZOJ]2959: 长跑
    http状态码 超详细
    mysql注入常用函数
    tomcat7远程代码执行 ImageMagick 命令执行漏洞
    kali安装redis
    反序列化
    CSP 之dvwa
    token防爆破?
    变量覆盖
    安全狗绕过
  • 原文地址:https://www.cnblogs.com/lyt0207/p/12380382.html
Copyright © 2011-2022 走看看