I am trying to solve a problem of LinkedList on leetcode in javascript language but out of 86 test cases 74 cases are passed but at 75 I am getting an error Output Limit Exceeded.
Problem:
Given the head of a singly linked list, return true if it is a palindrome.
Examples:
Input: head = [1,2,2,1]
Output: true
Input: head = [1,2]
Output: false
My code:
let array = [];
let list = head;
while (list) {
array.push(list.val)
console.log("array1", array)
list = list.next;
}
let list2 = head;
while (list2) {
let out = array.pop()
if (out === list2.val) {
list2 = list2.next;
} else {
return false
}
}
return true
Last executed input:
[3,8,9,3,2,8,9,1,8,9,9,8,5,2,5,4,4,4,3,9,7,5,0,5,8,6,3,3,8,0,7,3,7,7,1,1,1,7,0,2,8,1,8,7,2,9,5,2,9,7,4,8,...]
I am not able to understand why I am getting a Limit exceeded error? Is it due to too many inputs? Or Issue is in my code? If the issue is with inputs then How can I solve this problem in Javascript?
console.log is trapped by the LeetCode framework, and as your first loop calls it in every iteration, this is slowing down the process significantly.
Just remove the console.log.
As a follow-up: try to find a solution where you do not copy every value into an array, which requires O(n) extra space. Instead, try to do it with O(1) extra space.