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, which sets a limit on the total size of the output you can generate. As your first loop calls it in every iteration, printing the array of already collected values each time, you are producing output in the order of 3𝑛(𝑛+1)/2 characters. The full test suite will have tests with 𝑛 going up to 105, which means you could produce over 15 billion characters. LeetCode will stop the script before it gets to that.
Also be aware that producing debugging output slows down the process significantly, so you also risk to hit a time limit.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With