Delete a Node from Linked List

Moderate
0/80
Average time to solve is 40m
75 upvotes
Asked in companies
QualcommZomatoGoldman Sachs

Problem statement

You have been given a linked list of integers. Your task is to write a function that deletes a node from a given position, 'POS'.

Note :
Assume that the Indexing for the linked list always starts from 0.

If the position is greater than or equal to the length of the linked list, you should return the same linked list without any change.
Illustration :
The following images depict how the deletion has been performed.

Image-I :

Alt txt

Image-II :

Alt txt

Detailed explanation ( Input/output format, Notes, Images )
Input format :
The first line contains the elements of the linked list separated by a single space. 
The second line contains the integer value of 'POS'. It denotes the position in the linked list from where the node has to be deleted.
 Remember/Consider :
While specifying the list elements for input, -1 indicates the end of the singly linked list and hence, would never be a list element
Output format :
Print the resulting linked list of integers in a row, separated by a single space.

Note:

You are not required to print the output, it has already been taken care of. Just implement the function. 
Sample Input 1 :
3 4 5 2 6 1 9 -1
3
Sample Output 1 :
3 4 5 6 1 9
Explanation of Sample Output 1 :
The data in the node with index 3 is 2 which has been removed.
Sample Input 2 :
3 4 5 2 6 1 9 -1
0
Sample Output 2 :
4 5 2 6 1 9
Constraints :
0 <= N <= 10^5
POS >= 0

Time Limit: 1sec
Expected Complexity :
Time Complexity  : O(N)
Space Complexity  : O(1)
Hint

Use recursion. Split the list into two parts. The head and the rest of the list.

Approaches (2)
Recursive Approach
  1. If HEAD is null, return null since we can’t delete anything from an empty list.
  2. If the head’s DATA is equal to the element we want to remove, return the next node from the HEAD. Othewise go to step 3.
  3. Use recursion on the head’s next node to get the HEAD of the modified list.
  4. Assign the head’s next node to this newly returned HEAD and return the original HEAD.
Time Complexity

O(MIN(POS, N)),  where 'POS' is the position of the node deleted and 'N' being the size of the Singly Linked List.

 

Since we visit each node exactly once in a single iteration.

Space Complexity

O(MIN(POS, N)),  where 'POS' is the position of the node deleted and 'N' being the size of the Singly Linked List.

 

Since this is the space required due to the recursion stack.

Code Solution
(100% EXP penalty)
Delete a Node from Linked List
Full screen
Console