Skip to content
On this page

234. 回文链表

原题链接:LeetCode 234. 回文链表

题目描述

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

示例 1:

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

示例 2:

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

提示:

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

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

难度: Easy


题解代码

javascript
/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @return {boolean}
 */
var isPalindrome = function(head) {
  const arr = []
  let p = head
  while (p) {
    arr.push(p.val)
    p = p.next
  }

  // return arr.join('') === arr.reverse().join('')
  let left = 0, right = arr.length - 1
  while (arr[left] === arr[right] && right >= left) {
    left++
    right--
  }
  return left === right + 2 || left === right + 1
};

技术文档集合