题解 | #判断一个链表是否为回文结构#

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

http://www.nowcoder.com/practice/3fed228444e740c8be66232ce8b87c2f

  1. 快慢指针找到一半
  2. 链表逆转
  3. 判断两链表是否相等

可以记忆一下快慢指针的板子,以head开头,slow.next就是以一半无论奇偶

import java.util.*;

public class Solution {

    public boolean isPail (ListNode head) {
        // 快慢指针找到一半
        if(head == null)return false;
        ListNode fast,slow,pre,p;
        fast = slow = head;
        while(fast.next!=null&&fast.next.next != null){
            fast = fast.next.next;
            slow = slow.next;
        }
        
        //slow.next就是一半,然后链表逆转
        slow = slow.next;
        fast = slow;
        pre = null;
        while(fast!=null){
            ListNode t = fast.next;
            fast.next = pre;
            pre = fast;
            fast = t;
        }
        
        //判断两链表是否相等
        while(pre!=null){
            if(pre.val != head.val)return false;
            pre = pre.next;
            head = head.next;
        }
        return true;
    }
}
全部评论

相关推荐

每晚夜里独自颤抖:要求太多的没必要理
点赞 评论 收藏
分享
投递长鑫存储等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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