


Input : 1 -> 2 -> 3 -> 4 -> 'NULL' and 'K' = 2
Output: 1 -> 2 -> 4 -> 'NULL'
Explanation:
After removing the second node from the end, the linked list become 1 -> 2 -> 4 -> 'NULL'.

The first line contains an integer 'N', the size of the linked list and an integer 'K'.
The second line contains 'N' space-separated integers.
The output contains the linked list after deletion. If the list is empty, -1 is printed.
You do not need to print anything, it has already been taken care of. Just implement the given function.
Can you solve this without finding the length of the linked list and using O(1) extra space?
The naive solution is to process all the nodes from the front side of the linked list and keep adding a node to the list. Now we can easily remove the Kth node from the end of the list by simply replacing the next pointer of the ('LENGTH' - 'K' - 1)th node (0-based indexing from start) of the list with the ('LENGTH' - 'K' + 1)th node. This way we can remove the Kth node from the end of the linked list.
We can remove the required node without finding the length of the given linked list by using two pointers 'SLOW' and 'FAST', which are 'K' nodes apart from each other.