Palindrome Linked List

Easy
0/40
Average time to solve is 20m
181 upvotes
Asked in companies
Paytm (One97 Communications Limited)AppleMicrosoft

Problem statement

You are given a singly Linked List of integers. Your task is to return true if the given singly linked list is a palindrome otherwise returns false.

For example:
The given linked list is 1 -> 2 -> 3 -> 2-> 1-> NULL.

It is a palindrome linked list because the given linked list has the same order of elements when traversed forwards and backward​.
Follow Up:
Can you solve the problem in O(N) time complexity and O(1) space complexity iteratively?
Detailed explanation ( Input/output format, Notes, Images )
Input format :
The first line of input contains an integer 'T' representing the number of test cases or queries to be processed. Then the test case follows.

The only line of each test case contains the elements of the singly linked list separated by a single space and terminated by -1. Hence, -1 would never be a list element.
Output format :
For each test case, print “true” or “false” in a separate line.
Note :
You do not need to print anything, it has already been taken care of. Just implement the given function.
Constraints :
1 <= T <= 10
0 <= L <= 10^5
1 <= data <= 10^9 and data != -1

Where L is the number of nodes in the Linked List.

Time Limit: 1 sec
Sample Input 1 :
2
1 2 3 4 5 6 -1
1 2 1 -1
Sample Output 1 :
false
true
Explanation for sample 1:
For the first test case, it is not a palindrome because Linked List doesn't have the same order of elements when traversed forwards and backwards​.

For the second test case, it is a palindrome linked list because a Linked List has the same order of elements when traversed forwards and backwards​.
Sample Input 2 :
2
1 -1
1 10 45 10 1 -1
Sample Output 2 :
true
true
Hint

Think of a solution to store Linked List elements in a data structure that gives reverse order of the linked list.

Approaches (4)
Using Stack
  1. The idea is to traverse the Linked List from head to tail and push every encountered node data into the stack.
  2. Then we traverse the Linked List and for each node, we pop the top element from the stack and compare it with current node data of the Linked List. If they mismatch then the current linked list is not palindrome else if all elements match then the linked list is a palindrome.
Time Complexity

O(N), where N is the number of nodes in the Linked List.

 

In the worst case, we are traversing the whole linked list two times i.e O(N). Hence, the overall complexity is O(N).

Space Complexity

O(N), where N is the total number of nodes in the Linked List.

 

In the worst case, we are storing the all Linked List node value in the stack. Hence, overall complexity will be O(N).

Video Solution
Unlock at level 3
(75% EXP penalty)
Code Solution
(100% EXP penalty)
Palindrome Linked List
Full screen
Console