码迷,mamicode.com
首页 > 其他好文 > 详细

234. 回文链表

时间:2021-05-04 15:38:36      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:节点   int   java   示例   ast   null   解题思路   写法   空间   

难度 easy
请判断一个链表是否为回文链表。

示例 1:

输入: 1->2
输出: false
示例 2:

输入: 1->2->2->1
输出: true
进阶:
你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?

解题思路:这里的解题思路还是相对比较简单的,就是用快慢指针找到中间节点,然后把后半段倒置一下,最后是从起点和后半段的起点一起往后遍历,根据他们的值是否相等,然后进行判断。

代码 t76 s53 java

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public boolean isPalindrome(ListNode head) {
        if(head==null || head.next==null) return true;
        ListNode slow = head, fast = head;
        while(fast.next!=null && fast.next.next!=null){
            slow = slow.next;
            fast = fast.next.next;
        }

        ListNode cur = slow.next;
        slow.next = null;
        while(cur!=null){
            ListNode t = cur.next;
            cur.next = slow.next;
            slow.next = cur;
            cur = t;            
        }
        cur = slow.next;
        while(cur!=null){
            if(head.val!=cur.val) return false;
            head = head.next;
            cur = cur.next;
        }
        return true;
    }
}

链表的翻转还是非常重要的,一定要记住写法。

参考资料

234. 回文链表

标签:节点   int   java   示例   ast   null   解题思路   写法   空间   

原文地址:https://www.cnblogs.com/zhengxch/p/14725333.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!