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

Posted go大鸡腿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leecode 请判断一个链表是否为回文链表。相关的知识,希望对你有一定的参考价值。

文章目录

题目

输入: 1->2->2->1
输出: true

代码

class Solution {
    public boolean isPalindrome(ListNode head) {
        List<Integer> list = new ArrayList<>();
        list.add(head.val);
        if(head.next==null){
            return true;
        }
        while(head.next!=null){
            head=head.next;
            list.add(head.val);
        }
        //偶数
        if(list.size()%2==0){
            int i = list.size()/2-1;
        int j = list.size()/2;
        while(i>=0&&j<=list.size()-1){
            if(!list.get(i).equals(list.get(j))){
                return false;
            }
            i--;j++;
        }
return true;
        }
        //奇数
        int i = list.size()/2-1;
        int j = list.size()/2+1;
        while(i>=0&&j<=list.size()-1){
            if(!list.get(i).equals(list.get(j))){
                return false;
            }
            i--;j++;
        }
return true;

    }
}

改进

上面的代码分奇数偶数的情况,看下官方的解答是使用双指针进行遍历
在这里插入图片描述

以上是关于Leecode 请判断一个链表是否为回文链表。的主要内容,如果未能解决你的问题,请参考以下文章

左神算法书籍《程序员代码面试指南》——2_06判断一个链表是否为回文结构

链表--判断一个链表是否为回文结构

判断链表的回文结构

链表的回文结构

LeetCode234:回文链表

链表面试题之判断是否为回文链表—三种方式解决,总有一种方法让面试官满意