zhangdizhangdi

234.回文链表

题目

LeetCode 简单

题目

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

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

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

题解

方法:双指针

双指针 O(n) O(n)

ts
function isPalindrome(head: ListNode | null): boolean {
  const vals = []
  while (head !== null) {
    vals.push(head.val)
    head = head.next
  }
  for (let i = 0, j = vals.length - 1; i < j; ++i, --j) {
    if (vals[i] !== vals[j]) {
      return false
    }
  }
  return true
}

const list = new LinkedList([1, 2, 2, 1])
console.log('🌰', isPalindrome(list.head))

const list2 = new LinkedList([1, 2])
console.log('🌰', isPalindrome(list2.head))

方法:递归【todo⌛️】

方法:快慢指针【todo⌛️】