Palindrome Linked List

EasyLinked ListTwo PointersStackRecursion

Solution

import { ListNode } from '@algorithm/lib';
 
export function isPalindrome(head: ListNode | null): boolean {
  const arr = convertLinkedListToArray(head);
  let [start, end] = [0, arr.length - 1];
  while (start < end) {
    if (arr[start] !== arr[end]) {
      return false;
    }
    start += 1;
    end -= 1;
  }
  return true;
}
 
function convertLinkedListToArray(head: ListNode | null) {
  const result: number[] = [];
  let currentNode = head;
  while (currentNode !== null) {
    result.push(currentNode.val);
    currentNode = currentNode.next;
  }
  return result;
}