Open In App

Program for Nth node from the end of a Linked List

Last Updated : 01 Aug, 2024
Summarize
Comments
Improve
Suggest changes
Share
328 Likes
Like
Report

Given a Linked List of M nodes and a number N, find the value at the Nth node from the end of the Linked List. If there is no Nth node from the end, print -1.

Examples:

Input: 1 -> 2 -> 3 -> 4, N = 3
Output: 2
Explanation: Node 2 is the third node from the end of the linked list.

Input: 35 -> 15 -> 4 -> 20, N = 4
Output: 35
Explanation: Node 35 is the fourth node from the end of the linked list.

[Naive Approach] Finding the length of list - Two Pass - O(M) Time and O(1) Space

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 - n + 1)th nodes from beginning of the Linked List.

C++14
C Java Python C# JavaScript

Output
35

Time complexity: O(M) where M is the size of the linked list
Auxiliary Space: O(1)

[Expected Approach] Using Two Pointers - One Pass - O(M) Time and O(1) Space

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 (N - 1). Now, move both the pointers simultaneously until ref_ptr reaches the last node. Since the distance between main_ptr and ref_ptr is (N - 1), so when ref_ptr will reach the last node, main_ptr will reach Nth 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:

  • Maintain two pointers main_ptr and ref_ptr
  • Move ref_ptr to the Nth node from the start
  • Now move both main_ptr and ref_ptr, until the ref_ptr reaches the last node
  • Now return the data of the main_ptr, as it is at the Nth node from the end
C++
C Java Python C# JavaScript

Output
Node no. 4 from end is: 35

Time Complexity: O(M) where M is the length of the linked list
Auxiliary Space: O(1)


Nth node from end of linked list | DSA Problem
Next Article

Similar Reads