美文网首页
leetcode-day11-回文链表[234题]

leetcode-day11-回文链表[234题]

作者: 孙静静 | 来源:发表于2020-10-23 11:01 被阅读0次
    image.png

    首先找到链表的长度,然后找出中间的那个值,定义双指针,判断该长度是奇数还是偶数,从而来定义指针的指向,从中间往两边走,一 一比较如果不相等则返回false; 最后返回true

    算法思想: 遍历链表 + 双指针

    /**
     * Definition for singly-linked list.
     * function ListNode(val) {
     *     this.val = val;
     *     this.next = null;
     * }
     */
    /**
     * @param {ListNode} head
     * @return {boolean}
     */
    // 遍历链表 + 双指针
    var isPalindrome = function(head) {
        let len = 1;
        let arr = [head];
        while(head && head.next !== null){ // 遍历链表
            len++;
            arr.push(head.next);
            head = head.next;
        }
        if(len === 0 || len === 1) return true;
        let left_n, right_n;
        if(len % 2 === 0){
            left_n = len/2 - 1; right_n = len/2;
        } else {
            left_n = parseInt(len/2) - 1; right_n = parseInt(len/2) + 1;
        }
        while(left_n >= 0){ 
            if(arr[left_n].val !== arr[right_n].val){ // 对称的两个值如果不相等,返回false
                return false;
            }
            left_n --; // 向左走
            right_n ++; // 向右走
        }
        return true;
    };
    

    相关文章

      网友评论

          本文标题:leetcode-day11-回文链表[234题]

          本文链接:https://www.haomeiwen.com/subject/nhxvmktx.html