Bootstrap

算法-判断回文链表

力扣题目:LCR 027. 回文链表 - 力扣(LeetCode)

给定一个链表的 头节点 head ,请判断其是否为回文链表。

如果一个链表是回文,那么链表节点序列从前往后看和从后往前看是相同的。

示例 1:

输入: head = [1,2,3,3,2,1]
输出: true

示例 2:

输入: head = [1,2]
输出: false

提示:

  • 链表 L 的长度范围为 [1, 10^5]
  • 0 <= node.val <= 9

进阶:能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?

算法如下

class Solution {
    public boolean isPalindrome(ListNode head) {
        List<Integer> list=new ArrayList<>();
        ListNode curP=head;
        if(curP==null)
        {
            return false;
        }else {
            //赋值,进行判断
            while (curP!=null)
            {
                list.add(curP.val);
                curP=curP.next;
            }
            //双指针
            int low=0;
            int high=list.size()-1;
            while (low<=high)
            {
                if(list.get(low)!=list.get(high))
                {
                    return false;
                }
                low++;
                high--;
            }
        }

        return true;

    }
}

;