![]() |
VOOZH | about |
Given a Linked List and a number k, find the value at the kth node from the end of the Linked List. If there is no Nth node from the end, print -1.
Examples:
Input: head=1 -> 2 -> 3 -> 4, k= 3
Output: 2
Explanation: Node 2 is the third node from the end of the linked list.Input: head=35 -> 15 -> 4 -> 20, k = 5
Output: -1
Explanation: length of linked list is less then k so -1.
Table of Content
The idea is to count the number of nodes in linked list in the first pass, say len. In the second pass, return the (len - k + 1)th nodes from beginning of the Linked List.
35
Time complexity: O(n) where n is number of nodes in the linked list
Auxiliary Space: O(1)
The idea is to maintain two pointers, say main_ptr and ref_ptr point to the head of Linked List and move ref_ptr to the Nth node from the head to ensure that the distance between main_ptr and ref_ptr is (k - 1). Now, move both the pointers simultaneously until ref_ptr reaches the last node. Since the distance between main_ptr and ref_ptr is (k - 1), so when ref_ptr will reach the last node, main_ptr will reach kth node from the end of Linked List. Return the value of node pointed by main_ptr.
Below image is a dry run of the above approach:
Follow the given steps to solve the problem:
35
Time Complexity: O(n) where n is number of nodes the linked list
Auxiliary Space: O(1)