> LeetCode:回文链表_234 - Yuyy
Yuyy
Yuyy
LeetCode:回文链表_234

思路

简单的方法是遍历一边链表,存入数组,再从首尾往中间判断是否相等。但是题目说了,进阶的解法是空间复杂度为O(1),首先排除递归反转链表,倒是可以利用迭代来反转链表。在优化下,不用反转整条链表来比较,只需反转半条即可。

一次就AC了,爽

题目

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false

 

示例 1:

https://assets.leetcode.com/uploads/2021/03/03/pal1linked-list.jpg

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

示例 2:

https://assets.leetcode.com/uploads/2021/03/03/pal2linked-list.jpg

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

 

提示:

  • 链表中节点数目在范围[1, 105]
  • 0 <= Node.val <= 9

 

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

Related Topics
  • 递归
  • 链表
  • 双指针
  • 👍 1140
  • 👎 0
  • 代码

            public boolean isPalindrome(ListNode head) {
                // 注意链表长度为1的情况
    
                // 利用快慢指针找出链表中点
                ListNode dummy = new ListNode(-1, head);
                ListNode slow = dummy, fast = dummy;
                while (fast.next != null) {
                    slow = slow.next;
                    fast = fast.next;
                    if (fast.next != null) {
                        fast = fast.next;
                    }
                }
    
                // 反转后半段链表
                ListNode pre = null;
                ListNode curr = slow.next;
                while (curr != null) {
                    ListNode next = curr.next;
                    curr.next = pre;
                    pre = curr;
                    curr = next;
                }
    
                // 前半段链表和反转过的后半段链表相比较
                ListNode front = head, back = pre;
                while (back != null) {
                    if (front.val != back.val) {
                        return false;
                    }
                    front = front.next;
                    back = back.next;
                }
    
                return true;
            }

    发表评论

    textsms
    account_circle
    email

    Yuyy

    LeetCode:回文链表_234
    思路 简单的方法是遍历一边链表,存入数组,再从首尾往中间判断是否相等。但是题目说了,进阶的解法是空间复杂度为O(1),首先排除递归反转链表,倒是可以利用迭代来反转链表。在优化下,…
    扫描二维码继续阅读
    2021-10-08
    友情链接
    标签
    归档
    近期文章
    分类
    近期文章