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

利用快慢指针找到中点,之后进行反转。 反转之后使fast=head,比较值即可。不相同直接返回false,相同则继续进行比较,直到slow为false。比较完返回true即可。

public boolean isPail (ListNode head) {
        // write code here

        ListNode fast=head;
        ListNode slow=head;
        while (fast!=null&&fast.next!=null){
            fast=fast.next.next;
            slow=slow.next;
        }
        slow=reverse(slow);
        fast=head;
        while (slow!=null){
            if(fast.val!=slow.val) return false;
            fast=fast.next;
            slow=slow.next;
        }
        return true;
    }

    public ListNode reverse(ListNode head){
        if(head==null) return head;

        ListNode cur=head;
        ListNode pre=null;
        while (cur!=null){
            ListNode tail=cur.next;
            cur.next=pre;
            pre=cur;
            cur=tail;
        }
        return pre;
    }
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 11:15
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 11:35
程序员小白条:话太多,没实力和学历,差不多回答回答就行了,身份地位不一样
点赞 评论 收藏
分享
Twilight_m...:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务