Delete Alternate Nodes

Easy
0/40
Average time to solve is 20m
profile
Contributed by
30 upvotes
Asked in companies
MicrosoftTata Consultancy Services (TCS)Amazon

Problem statement

Given a Singly Linked List of integers, delete all the alternate nodes in the list.

Example:
List: 10 -> 20 -> 30 -> 40 -> 50 -> 60 -> null
Alternate nodes will be:  20, 40, and 60.

Hence after deleting, the list will be:
Output: 10 -> 30 -> 50 -> null
Note :
The head of the list will remain the same. Don't need to print or return anything.
Detailed explanation ( Input/output format, Notes, Images )
Input format :
The first and the only line of input will contain the elements of the Singly Linked List separated by a single space and terminated by -1.
Output Format :
The only line of output will contain the updated list elements.
Input Constraints:
1 <= N <= 10 ^ 6.
Where N is the size of the Singly Linked List

Time Limit: 1 sec
Sample Input 1:
1 2 3 4 5 -1
Sample Output 1:
1 3 5
Explanation of Sample Input 1:
2, 4 are alternate nodes so we need to delete them 
Sample Input 2:
10 20 30 40 50 60 70 -1
Sample Output 2:
10 30 50 70 
Hint

Try maintaining two pointers, where one points to a node, while the other points to its next node.

Approaches (1)
Two Pointer Approach

Let us maintain two pointers, curr and currNext. currNext will be used for storing the pointer of the node next to the node pointed by curr. curr is initialized with the head of the list initially. Then the algorithm follows:

While curr or curr→next is not NULL:

  1. Assign curr→next to currNext.
  2. Change curr→next to currNext→next.
  3. Move curr to curr→next.
Time Complexity

O(N), where N is the size of the linked list.

 

We are traversing the linked list once that takes O(N) time. Hence, the overall Time Complexity is O(N).

Space Complexity

O(1).

 

Constant extra space is required. Hence, the overall Space Complexity is O(1).

Code Solution
(100% EXP penalty)
Delete Alternate Nodes
Full screen
Console